<<

General n-Dimensional

Antonio Aguilera Ricardo Pérez-Aguila Centro de Investigación en Tecnologías de Información y Automatización (CENTIA) Universidad de las Américas, Puebla (UDLAP) Ex-Hacienda Santa Catarina Mártir México 72820, Cholula, Puebla [email protected] [email protected]

ABSTRACT This paper presents a generalized approach for performing general rotations in the n-Dimensional Euclidean around any arbitrary (n-2)-Dimensional subspace. It first shows the general representation for the principal n-D rotations. Then, for any desired general n-D , a set of principal n-D rotations is systematically provided, whose composition provides the original desired rotation. We show that this coincides with the well-known 2D and 3D cases, and provide some 4D applications.

Keywords Geometric Reasoning, Topological and Geometrical Interrogations, 4D Visualization and Animation.

1. BACKGROUND arctany x x  0

arctany x   x  0 The n-Dimensional arctan2(y, x)   2 x  0, y  0 In this work, we will use a simple nD generalization  of the 2D and 3D translations. A  2 x  0, y  0

x  (x1 , x2 ,..., xn ) can be translated by a distance vec- In this work we will only use arctan2.

tor d  (d ,d ,...,d ) and results x  (x, x ,..., x ) , 1 2 n 1 2 n 2. INTRODUCTION which, can be computed as x  x  T (d) , or in its expanded matrix form in , The rotation as shown in Eq.1. [Ban92] and [Hol91] have identified that if in the 2D space a rotation is given around a point, and in the

    x1 x2 xn 1  3D space it is given around a , then in the 4D space, in analogous way, it must be given around a 1 0  0 0 plane.    0 1 0 0   (Eq. 1)         x1 x2 xn 1 [Hol91] considers that rotations in 3D space must be  0 0  1 0 considered as rotations parallel to a 2D plane instead   of rotations around an axis. [Hol91] supports this d d  d 1  1 2 n  idea considering that given an origin of rotation and a destination point in the 3D space, the set of all The arctan2 function rotated points for a given lie in a If tan( )  m , then   arctan(m) . Moreover, if we single plane, which is called the rotation plane.

know that tan( )  y x , then a better well-known Moreover, the rotation axis in the 3D space coincides with the vector of the rotation plane. The solution is   arctan2( y, x) , where concept of rotation plane is consistent with the 2D space because all the rotated points lie in the same Permission to make digital or hard copies of all or part of and only plane. Finally, with the above ideas, this work for personal or classroom use is granted without [Hol91] constructs all six basic 4D rotation matrices fee provided that copies are not made or distributed for around the main planes in 4D space. profit or commercial advantage and that copies bear this notice and the fill citation on the first page. To copy Main n-Dimensional Rotations otherwise, or republish, to post on servers or to redistribute We know that in the 3D space, rotations are defined to lists, requires prior specific permission and/or a fee. in terms of the axis around they take place. However,

we know that it is more appropriate to consider that WSCG SHORT Communication papers proceedings WSCG'2004, February 2-6, 2004, Plzen, Czech Republic. 3D rotations take place in a plane embedded in the Copyright UNION Agency - Science Press 3D space (the plane’s normal vector coincides with the rotation axis). Using these ideas, [Duf94] genera-

View metadata, citation and similar papers at core.ac.uk brought to you by CORE

provided by DSpace at University of West Bohemia lizes the concept of a main rotation in an nD space key points that will be very useful when extending (n  2) as the rotation of an axis Xa in direction to an them to the nD case. Moreover, the 3D case will be presented in a way that facilitates its generalization axis Xb. The plane described by axis Xa and Xb is to nD. what [Hol91] defined as rotation plane. [Duf94] pre- sents the following general matrix for main rotations: General 2D Rotations

  ra,a cos( )  Since the main 2D rotation R1,2 is around the origin,    r  cos( )   b,b  a general rotation of an around a fixed point   ra,b   sin( )  a  (a1,a2 ) can be obtained by the following  Ra,b ( )  ri, j  r  sin( ) composition:        , which is  b,a  x x T( a) R1,2 ( ) T(a)   rj, j  1, j  a, j  b expanded as shown in Eq. 2 Note that the inverse   r  0 elsewhere matrix of T (a) is T (a) .  i, j 

For an n-dimensional rotation, this is an n  n matrix, General 3D Rotations  or an (n  1)  (n  1) matrix if homogeneous A general 3D rotation is a rotation of an angle coordinates are used. It can easily be verified that in around a general axis. This axis, in this work, will be represented by the supporting line of the directed the 2D space, R1,2 corresponds to the positive segment S  ab (a 1D ), where (counter clockwise) rotation around the origin, while (0) (0) (0) (0) (0) (0) a  (a1 ,a2 ,a3 ) and b  (b1 ,b2 ,b3 ) are two R2,1 corresponds to the negative (clockwise) rotation non-coincident 3D points which we will refer as the 1 around the origin, moreover  . Similarly in R1,2 R2,1 vertices of S. See Fig 1.(i). The positive direction of the 3D space, R1,2 , R2,3 and R3,1 respectively the rotation is given by the right hand rule (pointing with your right thumb from a to b, the remaining four correspond to a positive rotation around axes X , X , 3 1 curved fingers describe the positive direction). This and X (ie., axes Z, X, and Y) while the 2 rotation can be achieved as the composition of a corresponding negative rotations are R , R and 2,1 3,2 number of transformations, which firstly aligns

R1,3 , which, by the way, are the corresponding segment S with any of the main axis, secondly performs the desired rotation around that main axis, inverse matrices of R1,2 , R2,3 and R3,1 .

and thirdly returns the rotation axis to its original

 Observation 1. Matrix Ra,b ( ) is almost an identity by performing the inverse of those transformations in reverse order. matrix except in the intersection of columns a and b (0) (0) (0) with rows a and b, which means that only the (0) a1 a2 a3  Let v  be the matrix for the coordinates a and b of a point will change after a  (0) (0) (0)  b1 b2 b3   Ra,b ( ) rotation, which is consistent with the 3D and original vertices’ coordinates, let M k be the 2D cases. corresponding matrix for the k th transformation.  n  (0) (1) (2) (k ) (k 1) Observation 2. Since there are C   main planes in     Then v , v , v ,..., where v v M k , is a  2  series of matrices holding the vertices coordinates at a nD space, this is precisely the number of main (k ) (k ) (k )  (k ) a1 a2 a3 rotations for such space. each step, v    , or simply (k ) (k ) (k ) b1 b2 b3  Observation 3. Let ek (1  k  n) be the (k ) (k ) a  along axis Xk, in the nD space, then  . v  (k )   b ea  Ra,b ( / 2)  eb , i.e., Ra,b moves a point on Xa   towards Xb. In this work, the chosen main axis where the segment

3. FROM MAIN TO GENERAL S will be directed to, is X1. The first step is to move point a to the origin, therefore, M  T (a) ROTATIONS 1

(1) 0 0 0  which makes  Although the following discussions can be found in v  (1) (1) (1)  b b b any text book (see Hearn & Baker [Hea96] for  1 2 3  (1) (0) (0) example), they are included here to underline some where b  b  a , j  1,2,3. See Fig. 1.(ii). j j j

1 0 0 cos( ) sin( ) 0 1 0 0       (Eq. 2) x x 1  x x 1 0 1 0   sin( ) cos( ) 0  0 1 0 1 2 1 2      

        a1 a2 1  0 0 1 a1 a2 1

i) ii) x  x  M , where M  M  M  M  M  M  M  M X2 X2 1 2 3 4 5 6 7 and it is usually computed in advance. b General 4D Rotations a     A general 4D rotation is a rotation of an angle  X1 X1 around a general plane. This plane, in this work, will be represented by the supporting plane of a triangle T  abc (a 2D simplex), where X3 X3 (0) (0) (0) (0) (0) (0) (0) (0) a  (a1 ,a2 ,a3 ,a4 ) , b  (b1 ,b2 ,b3 ,b4 ) and (0) (0) (0) (0) X2 X2 c  (c1 ,c2 ,c3 ,c4 ) are three non-collinear 4D points which we will refer as the vertices of T. This rotation can be achieved as the composition of a

  number of transformations, which firstly takes

X1 triangle T onto main plane X1X2, so that edge ab of T X1 is aligned with axis X1, secondly it performs the desired rotation around main plane X1X2, and thirdly it returns triangle T to its original position by X3 iii) X3 iv) performing the inverse of those transformations in Figure 1. Set of transformations needed to align reverse order. segment S  ab to axis X1. (0) (1) (2) Let v , v , v ,... be the series of matrices holding (1) The second step is to rotate b around axis X1, by a the vertices’ coordinates at each step, where (2)  (0) suitable angle  , so that the resulting b lies on (k ) (k 1) 1 v  v  M k , and v is the matrix for the main plane X1X2. In this way we can get rid of the original vertices’ coordinates: third by making the third coordinate equal (0) (0) (0) (0)  a1 a2 a3 a4 to zero, resulting a 2D problem. It can be seen from (0)  (0) (0) (0) (0)    v b1 b2 b3 b4 Fig.1.(ii) that the needed rotation is R3,2 ( 1 ) , where    (0) (0) (0) (0)  (1) (1) (1) (1) c1 c2 c3 c4     tan( 1 )  b3 b2 , thus 1  arctan2(b3 ,b2 ).

(1) (1) Then, and proceeding in a similar way as the 3D Therefore M 2  R3,2 arctan2b3 ,b2 , which makes case, we find M 1  T (a) , which makes

(2) 0 0 0  , see Fig.1.(iii). v  (2) (2)  0 0 0 0  b1 b2 0 (1)  (1) (1) (1) (1)   v b b b b  1 2 3 4  (2) (2) (1) (1) (1) (1) Similarly, M  R arctan2 b ,b , which rotates   3 2,1  2 1  c1 c2 c3 c4  b(2) onto main axis X making the second coordinate 1 From now on, we can not rely on a picture for (3) 0 0 0 also zero, i.e., v  , see Fig.1.(iv). figuring out the needed 4D rotations, therefore we  (3)  th b1 0 0 must rely on Eq. 3 which rotates points in the j th dimension towards the (j-1) dimension, thus we find These last two steps show that if we want to make the (1) (1) M  R arctan2b ,b , which makes jth coordinate equal to zero we have to make a 2 4,3 4 3 rotation 0 0 0 0 

(k 1) (k 1) (2)  (2) (2) (2)  M  R arctan2 b ,b (Eq. 3) v  b b b 0 k j, j 1   j j 1   1 2 3  (2) (2) (2) (2)   c1 c2 c3 c4  (3) At this point we have segment S (following this (2) (2) notation) aligned to axis X1, so the next step is a M 3  R3,2 arctan2b3 ,b2 , which makes positive rotation of the desired angle  around axis 0 0 0 0    X1, that is M 4 R2,3   . The final stage returns the (3)  (3) (3)  v  b b 0 0  1 2  rotation axis to its original position by applying (3) (3) (3) (3) c c c c  M , M , and M , which are the inverse matrices of  1 2 3 4  5 6 7 M , M , and M , respectively. (3) (3) 3 2 1 and M 4  R2,1arctan2b2 ,b1 , which makes

0 0 0 0  Therefore, given a general 3D rotation defined by (4)  (4)  v  b1 0 0 0 segment S  ab (the rotation linear axis) and an angle   (4) (4) (4) (4) c c c c   , every point x will rotate to the point x defined by  1 2 3 4  (4) At this point edge ab of triangle T lies on axis X1, straightforward sequence, which is an adaptation to a but the opposite vertex c (4) can be anywhere in the more general case of Eq. 3. Therefore in the 4D space. We need to rotate triangle T (4) so that this Algorithm 1 is presented our procedure which we vertex and the whole triangle result embedded in named as the Aguilera-Perez Algorithm. main plane X1X2, however, we have to be careful not (0) Procedure ComputeM( v ,  , n) to apply any rotation that could move edge ab away M 1 : T (a) from axis X1. According to observation 1, any (1) (0) v : v  M rotation Ra,b with a  1 and b  1 will preserve 1 coordinate in X1. So we proceed that way by M : M 1 applying Eq. 3 but using vertex c instead of vertex b, k := 1 (4) (4) and find M 5  R4,3 arctan2c4 ,c3 , which makes for r := 2 to n-1 do

for c := n downto r do 0 0 0 0 (5)  (5)  k := k+1 v  b 0 0 0  1  (k 1) (k 1) M : R arctan2 v ,v (5) (5) (5) k c,c 1   r,c r,c 1    c1 c2 c3 0 (k ) (k 1) v : v  M k (5) (5) and M  R arctan2 c ,c , which makes 6 3,2   3 2  M : M  M k endFor 0 0 0 0 (6)  (6)  endFor v  b1 0 0 0   1     (6) (6) M : M Rn 1,n   M c c 0 0  1 2  endProcedure (6) and provides triangle T embedded in main plane X1X2, so the next step is a positive rotation of the Algorithm 1. The Aguilera-Perez Algorithm for desired angle  around plane X1X2, that is Computing a General nD Rotation Matrix.

M  R   . The final stage returns the rotation 7 3,4 Note that this procedure, at the end of its two loops, plane to its original position by applying M to M , (k) 8 13 produces matrix v with zeros in its last two (0) which are the inverse matrices of M 6 to M 1 , columns. This means that simplex v has been respectively. transformed into simplex v(k) which is embedded in

n Therefore, given a general 4D rotation defined by a ( -2)-dimensional subspace, because every vertex has a zero in its last two coordinates. Moreover, v(k) triangle T  abc (the rotation planar axis) and an is a lower triangular matrix, i.e., with n zeros in its angle  , every point x will rotate to the point x 13 first row, n-1 zeros in the second, and so forth, until    defined by x x M , where M  M k and it is row n-1 with exactly two zeros. k 1 (0) (0) (0) (0) usually computed in advance. v v v  v  0 0  0 0 1,1 1,2 1,3 1,n  (0) (0) (0)  (0)   (k )   v v v v v2,1 0 0 0  2,1 2,2 2,3 2,n    General nD Rotations             For the general case let us rename the elements of       (k ) (0) (0) (0)  (0) (k )  (k ) v v v v  vn 1,1 vn 1,n 2 0 0 matrix v as  n 1,1 n 1,2 n 1,3 n 1,n    (k ) (k ) (k )  (k ) v1,1 v1,2 v1,3 v1,n  (k )  (k ) (k ) (k ) (k )  This means that the embedding has taken place in a v = v v v  v (k)  2,1 2,2 1,3 2,n  way that vertex 1 of v is at the origin, vertex 2 is        on main axis X , vertex 3 is on main plane X X , and   1 1 2 v (k ) v (k ) v (k )  v (k )  n 1,1 n 1,2 n 1,3 n 1,n  so forth, until vertex n-1 which is inside an (n-2)-dimensional , which is exactly the Then, a general nD rotation is a rotation of an angle subspace where v(k) is embedded. At that point of  around a general (n-2)-Dimensional subspace. the algorithm, M is a single matrix that transforms This subspace will be represented by a (n-2)D simplex (0) into simplex (k) , that is, (0) v v simplex, whose vertices are v . Then, and pro- (k) (0) v  v  M . ceeding in a similar way as the 3D and 4D cases, we (0) find M 1  T (a) , where a is the first row of v . This leaves just enough room for performing our next

th n(n 1) step, the desired rotation, which will be a Then we see that in the k step, 2  k  2 , we  (k ) positive rotation of an angle , done around can make v r,c =0 in certain row r and column c, the X1X2...Xn-2, a (n-2)-dimensional (k 1) (k 1) using  in a rather hyperspace, that is,  . The final stage returns M k Rc,c 1arctan2vr,c ,vr,c 1  Rn 1,n ( ) the rotation plane to its original position, which can three triangles and sharing an edge with each one, see be done with M-1. These last two stages are Fig. 2.b). We will refer to the unravelings of the 4D performed at the end of the algorithm, computing a simplex as a stellated tetrahedron. single matrix M for the whole n-Dimensional The coordinates of the 4D simplex to unravel are rotation. presented in Table 1 (see [Ban96] for a methodology

to get the 4D simplex's coordinates). Therefore, given a general n-Dimensional rotation defined by simplex S (the rotation hyper axis) and an Vertex X1 X2 X3 X4 angle  , every point x will rotate to the point x 0 0 0 0 0 defined by x  x  M , where M is provided by our 1 1 0 0 0 algorithm. 1 3 2 0 0 2 2 Note that this procedure acts somewhat like the 1 3 6 Gaussian elimination for a system of linear equations. 3 0 2 6 3 4. APPLICATIONS 1 3 6 10 4 2 6 12 4 In this section we will present an interesting Table 1. Coordinates of a 4D simplex. application of our Aguilera-Perez Algorithm for performing the general n-dimensional rotations Analogously to the tetrahedron's unraveling, we have under the context of the unraveling of 4D , to select the 4D simplex's volume which will be specifically the 4D simplex (see Fig. 2). surrounded by the other four volumes as commented before. Moreover, the supporting hyperplane of this selected volume will be the hyperplane to which all the 4D simplex's remaining volumes will be directed to. Observing the 4D simplex's coordinates we can see that four of them present their fourth coordinate value (X4) equal to zero. This fact represents that one of the simplex's volumes (formed by vertexes 0-1-2- Figure 2. The 4D Simplex. 3) has X4=0 as its supporting hyperplane. Selecting the hyperplane W=0 is useful because one of the This topic has been discussed in [Ban96], [Kak94] volumes is "naturally embedded" in the 3D space and and [Agu02] (where a methodology for the it will not require any transformations. unraveling of the 4D is presented). Basically, the unraveling of a n-dimensional Now, it is also useful to identify the simplex's implies to embed the (n-1)-dimensional volumes through their vertices and to label them for cells that compose its boundary onto a (n-1)- future references. Until now we have one identified dimensional hyperplane. See Fig. 3.a and Fig 3.b for volume, it is formed by vertexes 0-1-2-3, and it will examples of the unraveling processes of the cube and be called volume A. See Table 2. the tetrahedron (a 3D simplex) respectively. Volume's Volume's Volume and Volume and position in the position in the Label Label 4D simplex 4D simplex 1 1 2 2 4 4 a) 0 0

Volume A Volume D 3 0-1-2-3 3 0-2-3-4 1 1 b) 2 2 4 4 Figure 3. Unraveling the cube (a) 0 0 and the tetrahedron (b). Volume B Volume E 3 3 Unraveling the 4D Simplex 0-1-2-4 1-2-3-4 1 Because the 4D simplex boundary is composed by 2 five tetrahedrons [Cox84], we can expect that the 4 unravelings of the 4D simplex will be a tetrahedron 0 surrounded by four other tetrahedrons and sharing a Volume C face with each one (the unravelings of the 3 0-1-3-4 tetrahedron are a triangle surrounded by the other Table 2. The 4D simplex's boundary volumes. We have already described volume A as "naturally corresponds to the supplement of the simplex's embedded" in the 3D space, because it won't require dihedral angle that is 75° 31' [Cox63]. In this way we any transformations. Volume A will occupy the guarantee that their X4 coordinate will be equal to central position in the stellated tetrahedron and it will zero. The matrices v(0) (i.e. matrices that contain the be called the "central volume". points of the shared faces between an adjacent

All of the remaining volumes will have face volume and the central volume) and the ' adjacency with the central volume. Due to this direction for each adjacent volume are presented in characteristic they can easily be rotated toward our Table 3 (the central volume is also included in each space because their rotating plane is clearly image as a reference for the initial and final position of the volume being analyzed). identified. Each of these volumes will rotate around the supporting plane of its shared face with central Now, all the transformations to unravel the simplex volume. They will be called "adjacent volumes". have been determined. To ravel it back, the same

Although the rotating planes are clearly identified, process must be applied in an inverse way but only the main difference between the 4D simplex and the angles’ signs must be changed. other polytopes' unraveling (as the hypercube, see Table 4 presents some snapshots from the 4D [Agu02]) is that the rotating planes do not correspond simplex's unraveling sequence. From t = 0.00 until to 4D space main planes (X1X2, X2X3, X3X1, X1X4, t = 0.75, the adjacent volumes (in red) are projected X2X4 and X3X4) in the simplex's unraveling. inside the central tetrahedron (in yellow). When Position in the t = 1.00, adjacent volumes are projected on the Adjacent stellated volume Transformations central tetrahedron’s faces (they look like planes) -an tetrahedron previous to to apply effect due to the selected 4D-. From after the rotation t = 1.25 until t = 5.00, the adjacent volumes are transformations projected outside the central tetrahedron. When t = 3.00 an interesting phenomenon arises, the Volume B Rotation around projected volumes form an hexadron (a cube) –again, X1X2 plane with an effect due to the selected projection. When  = 104° 29' t = 5.00 the stellated tetrahedron is finally composed.

Volume C 5. CONCLUSIONS

0 0 0 0 In this work we have presented the Aguilera-Perez (0)   v   1 0 0 0 Algorithm which specifies a methodology to perform  1 3 6 0  2 6 3  general n-dimensional rotations. Such methodology

 = 104° 29 ' coincides with the well known 2D and 3D cases.

Moreover, we have discussed an application in the Volume D

 context of the 4D simplex's unraveling.

 0 0 0 0 (0)  3  Future work v  1 0 0 2 2   Currently we identify two lines of research which are  1 3 6 0  2 6 3  closely related with the current presented work:

 = -104° 29 '

!" To propose methodologies for general Volume E n-dimensional rotations based in or in  1 0 0 0 k   a more general way, based in 2 -nions (whose (0)  3  v  1 0 0  2 2  theoretical are discussed in [Con03]). As a  1 3 6 0 precedent we mention the well known theory  2 6 3 

related to the representation of general 3D  = -104° 29 ' rotations using (see [Hea96] for Table 3. Applied transformations to the adjacent example). volumes

Due to this situation, we will apply the Aguilera- !" To define the procedures to unravel nD Perez Algorithm with the specific case of n = 4, i.e., polytopes such as the cross-polytope (the for performing general 4D-rotations (as a special analogous to the in the 3D space, see case, in our example, we have only one volume that [Gru03] and [Mcm02] for more details) whose positions can be arbitrary in the nD space. will rotate around the X1X2 plane, that is, the volume B that shares the face composed by vertices 0, 1 and Moreover, our methodology is currently being used 2, see Tables 1 and 2). The final objective is to rotate as auxiliary didactic material at the Universidad de each one of the adjacent volumes an angle of las Américas-Puebla considerably improving the 104° 29' around the supporting plane of the face that teaching/learning processes related to n-Dimensional share with the central volume. This angle Euclidean Spaces. t = 0.00 t = 0.25 t = 0.50 t = 0.75

t = 1.00 t = 1.25 t = 1.50 t = 1.75

t = 2.00 t = 2.25 t = 2.50 t = 2.75

t = 3.00 t = 3.25 t = 3.50 t = 3.75

t = 4.00 t = 4.25 t = 4.50 t = 4.75

t = 5.00

Table 4. Unraveling the 4D simplex.

6. REFERENCES

[Agu02] Aguilera, A., and Pérez-Aguila, R. A [Duf94] Duffin, K., and Barnett, W. Spiders: A new Method For Obtaining The By user interface for rotation and visualization of Unraveling The 4D Hypercube. Journal of the n-dimensional points sets. Proceedings of the 10th International Conference in Central Europe 1994 IEEE Conference on Scientific Visuali- on , Visualization and zation, October 17 to 21, 1994, Washington, D.C. WSCG 2002. Volume 10, USA, Pages 205-211. Number 1, pp. 1-8, February 4 to 8, 2002. Plzen, Czech Republic. ISSN: 1213-6972. [Gru03] Grünbaum, B. Convex Polytopes. Second Edition prepared by Kaibel, V., Klee, V., and Ziegler, M. Graduate Texts in Mathematics, Vo- [Ban92] Banks, D. Interactive Manipulation and Dis- lume 221. Springer-Verlag New York, Inc., 2003. play of Two-Dimensional Surfaces in Four Di- mensional Space. Proceedings of the 21st annual [Hea96] Hearn, D., and Baker, P. Computer conference on Computer graphics, July 24 - 29, Graphics, C Version. Second Edition. Prentice 1994, Orlando, FL USA, Pages 327 - 334. Hall, 1996.

[Ban96] Banchoff, Thomas F. Beyond the Third [Hol91] Hollasch, S.R. Four-Space Visualization of Dimension. Scientific American Library, 1996. 4D Objects. Arizona State University, 1991, Thesis for the Master of Science Degree.

[Con03] Conway, J., and Smith, D. On Quaternions [Kak94] Kaku, M. Hyperspace: A Scientific Odyssey and Octonions. A K Peters, Ltd., 2003. Through Parallel Universes, Time Warps, and the Tenth Dimension. Oxford University Press, 1994. [Cox63] Coxeter, H.S.M. Regular Polytopes. Dover Publications, Inc., New York, 1963. [Mcm02] McMullen, P., and Schulte, E. Abstract Regular Polytopes. Encyclopedia of Mathematics [Cox84] Coxeter, H.S.M. Fundamentos de Geome- and Its Applications, Volume 92. Cambridge tría, Editorial Limusa, 1984. University Press, 2002.