Polyhedron#
- class sympy.combinatorics.polyhedron.Polyhedron(corners, faces=(), pgroup=())[source]#
Represents the polyhedral symmetry group (PSG).
Explanation
The PSG is one of the symmetry groups of the Platonic solids. There are three polyhedral groups: the tetrahedral group of order 12, the octahedral group of order 24, and the icosahedral group of order 60.
All doctests have been given in the docstring of the constructor of the object.
References
- property array_form#
Return the indices of the corners.
The indices are given relative to the original position of corners.
Examples
>>> from sympy.combinatorics.polyhedron import tetrahedron >>> tetrahedron = tetrahedron.copy() >>> tetrahedron.array_form [0, 1, 2, 3]
>>> tetrahedron.rotate(0) >>> tetrahedron.array_form [0, 2, 3, 1] >>> tetrahedron.pgroup[0].array_form [0, 2, 3, 1]
See also
- property corners#
Get the corners of the Polyhedron.
The method
vertices
is an alias forcorners
.Examples
>>> from sympy.combinatorics import Polyhedron >>> from sympy.abc import a, b, c, d >>> p = Polyhedron(list('abcd')) >>> p.corners == p.vertices == (a, b, c, d) True
See also
- property cyclic_form#
Return the indices of the corners in cyclic notation.
The indices are given relative to the original position of corners.
See also
- property edges#
Given the faces of the polyhedra we can get the edges.
Examples
>>> from sympy.combinatorics import Polyhedron >>> from sympy.abc import a, b, c >>> corners = (a, b, c) >>> faces = [(0, 1, 2)] >>> Polyhedron(corners, faces).edges {(0, 1), (0, 2), (1, 2)}
- property faces#
Get the faces of the Polyhedron.
- property pgroup#
Get the permutations of the Polyhedron.
- reset()[source]#
Return corners to their original positions.
Examples
>>> from sympy.combinatorics.polyhedron import tetrahedron as T >>> T = T.copy() >>> T.corners (0, 1, 2, 3) >>> T.rotate(0) >>> T.corners (0, 2, 3, 1) >>> T.reset() >>> T.corners (0, 1, 2, 3)
- rotate(perm)[source]#
Apply a permutation to the polyhedron in place. The permutation may be given as a Permutation instance or an integer indicating which permutation from pgroup of the Polyhedron should be applied.
This is an operation that is analogous to rotation about an axis by a fixed increment.
Notes
When a Permutation is applied, no check is done to see if that is a valid permutation for the Polyhedron. For example, a cube could be given a permutation which effectively swaps only 2 vertices. A valid permutation (that rotates the object in a physical way) will be obtained if one only uses permutations from the
pgroup
of the Polyhedron. On the other hand, allowing arbitrary rotations (applications of permutations) gives a way to follow named elements rather than indices since Polyhedron allows vertices to be named while Permutation works only with indices.Examples
>>> from sympy.combinatorics import Polyhedron, Permutation >>> from sympy.combinatorics.polyhedron import cube >>> cube = cube.copy() >>> cube.corners (0, 1, 2, 3, 4, 5, 6, 7) >>> cube.rotate(0) >>> cube.corners (1, 2, 3, 0, 5, 6, 7, 4)
A non-physical “rotation” that is not prohibited by this method:
>>> cube.reset() >>> cube.rotate(Permutation([[1, 2]], size=8)) >>> cube.corners (0, 2, 1, 3, 4, 5, 6, 7)
Polyhedron can be used to follow elements of set that are identified by letters instead of integers:
>>> shadow = h5 = Polyhedron(list('abcde')) >>> p = Permutation([3, 0, 1, 2, 4]) >>> h5.rotate(p) >>> h5.corners (d, a, b, c, e) >>> _ == shadow.corners True >>> copy = h5.copy() >>> h5.rotate(p) >>> h5.corners == copy.corners False
- property size#
Get the number of corners of the Polyhedron.
- property vertices#
Get the corners of the Polyhedron.
The method
vertices
is an alias forcorners
.Examples
>>> from sympy.combinatorics import Polyhedron >>> from sympy.abc import a, b, c, d >>> p = Polyhedron(list('abcd')) >>> p.corners == p.vertices == (a, b, c, d) True
See also