def show3d(self, size=0.85): r""" Return the solution as a 3D Graphic object. OUTPUT: 3D Graphic Object EXAMPLES:: sage: from sage.games.quantumino import QuantuminoSolver sage: s = next(QuantuminoSolver(0).solve()) # not tested (1.5s) sage: G = s.show3d() # not tested (<1s) sage: type(G) # not tested <class 'sage.plot.plot3d.base.Graphics3dGroup'> To remove the frame:: sage: G.show(frame=False) # not tested To see the solution with Tachyon viewer:: sage: G.show(viewer='tachyon', frame=False) # not tested """ G = Graphics() for p in self: G += p.show3d(size=size) aside_pento = self._aside.canonical() + (2, -4, 0) G += aside_pento.show3d(size=size) # the box to fill half_box = tuple(a / 2 for a in self._box) b = cube(color='gray', opacity=0.2).scale(self._box).translate(half_box) b = b.translate((0, -.5, -.5)) G += b # hack to set the aspect ratio to 1 a, b = G.bounding_box() a, b = map(vector, (a, b)) G.frame_aspect_ratio(tuple(b - a)) return G
def show3d(self, size=0.85): r""" Return the solution as a 3D Graphic object. OUTPUT: 3D Graphic Object EXAMPLES:: sage: from sage.games.quantumino import QuantuminoSolver sage: s = next(QuantuminoSolver(0).solve()) # not tested (1.5s) sage: G = s.show3d() # not tested (<1s) sage: type(G) # not tested <class 'sage.plot.plot3d.base.Graphics3dGroup'> To remove the frame:: sage: G.show(frame=False) # not tested To see the solution with Tachyon viewer:: sage: G.show(viewer='tachyon', frame=False) # not tested """ G = Graphics() for p in self: G += p.show3d(size=size) aside_pento = self._aside.canonical() + (2,-4,0) G += aside_pento.show3d(size=size) # the box to fill half_box = tuple(a/2 for a in self._box) b = cube(color='gray',opacity=0.2).scale(self._box).translate(half_box) b = b.translate((0, -.5, -.5)) G += b # hack to set the aspect ratio to 1 a,b = G.bounding_box() a,b = map(vector, (a,b)) G.frame_aspect_ratio(tuple(b-a)) return G
def plot3d(self, colors=None): r""" Return a 3D-plot of ``self``. INPUT: - ``colors`` -- (default: ``["white", "lightgray", "darkgray"]``) list ``[A, B, C]`` of 3 strings representing colors EXAMPLES:: sage: PP = PlanePartition([[4,3,3,1],[2,1,1],[1,1]]) sage: PP.plot3d() Graphics3d Object """ if colors is None: colors = ["white", "lightgray", "darkgray"] return sum(cube(c, color=colors, frame_thickness=2, frame_color='black', frame=False) for c in self.cells())
def show_pentaminos(box=(5, 8, 2)): r""" Show the 17 3-D pentaminos included in the game and the `5 \times 8 \times 2` box where 16 of them must fit. INPUT: - ``box`` - tuple of size three (optional, default: ``(5,8,2)``), size of the box OUTPUT: 3D Graphic object EXAMPLES:: sage: from sage.games.quantumino import show_pentaminos sage: show_pentaminos() # not tested (1s) To remove the frame do:: sage: show_pentaminos().show(frame=False) # not tested (1s) """ G = Graphics() for i, p in enumerate(pentaminos): x = 4 * (i % 4) y = 4 * (i / 4) q = p + (x, y, 0) G += q.show3d() G += text3d(str(i), (x, y, 2)) G += cube(color='gray', opacity=0.5).scale(box).translate((17, 6, 0)) # hack to set the aspect ratio to 1 a, b = G.bounding_box() a, b = map(vector, (a, b)) G.frame_aspect_ratio(tuple(b - a)) return G
def show_pentaminos(box=(5,8,2)): r""" Show the 17 3-D pentaminos included in the game and the `5 \times 8 \times 2` box where 16 of them must fit. INPUT: - ``box`` -- tuple of size three (optional, default: ``(5,8,2)``), size of the box OUTPUT: 3D Graphic object EXAMPLES:: sage: from sage.games.quantumino import show_pentaminos sage: show_pentaminos() # not tested (1s) To remove the frame do:: sage: show_pentaminos().show(frame=False) # not tested (1s) """ G = Graphics() for i, p in enumerate(pentaminos): x = 4 * (i % 4) y = 4 * (i // 4) q = p + (x, y, 0) G += q.show3d() G += text3d(str(i), (x, y, 2)) G += cube(color='gray',opacity=0.5).scale(box).translate((17, 6, 0)) # hack to set the aspect ratio to 1 a, b = G.bounding_box() a, b = map(vector, (a, b)) G.frame_aspect_ratio(tuple(b - a)) return G