{VERSION 2 3 "HP RISC UNIX" "2.3" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 0 1 0 0 0 0 }{CSTYLE "2D Math" -1 2 "Times" 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 }{CSTYLE "Hyperlink" -1 17 "" 0 1 0 128 128 1 0 0 1 0 0 0 0 0 0 } {CSTYLE "2D Comment" 2 18 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }{CSTYLE " " -1 256 "" 1 24 0 0 0 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 257 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 258 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 259 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE " " -1 260 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 261 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 262 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 263 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 264 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 265 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 266 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 267 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 268 "" 1 18 0 0 0 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 269 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 270 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 271 "" 1 18 0 0 0 0 0 0 0 0 0 0 0 0 0 }{CSTYLE " " -1 272 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 256 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 257 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }} {SECT 0 {PARA 256 "" 0 "" {TEXT 256 21 "The 120-cell Polytope" }} {PARA 0 "" 0 "" {TEXT -1 397 " These are the procedures necessary to generate the various images of the 120-cell. In order to keep the text uninterupted, placing the cursor on the first line of commands ( in red) will execute all procedures necessary to define the polytope. \+ Maple will then take you to the first line of the next execution grou p. You may need to scroll back to read the text which precedes each d isplay." }}{PARA 0 "" 0 "" {TEXT -1 103 "For a detailed explanation of the procedures below, scroll through them and read the text and refer to " }{HYPERLNK 17 "Appendix A." 1 "proc.mws" "" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 81 " These are th e libraries of commands needed to execute the procedures below." }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 48 "with(linalg):with(plots):with(combi nat,permute):" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 6 " " }{TEXT 266 7 "Project" }{TEXT -1 54 " is a procedu re which takes a polytope P and a vector " }{TEXT 258 1 "v" }{TEXT -1 66 " and projects the vertices of P onto the hyperplane orthogonal to \+ " }{TEXT 257 1 "v" }{TEXT -1 1 "." }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 309 "project:=proc(P,v) local a,b,c,d,n,i;\na:=v[1];b:=v[2];c:=v[3];d: =v[4];\nn:=sqrt(a^2+b^2+c^2+d^2);\n[[seq([(P[1][i][1]*d+P[1][i][2]*c-P [1][i][3]*b- P[1][i][4]*a)/n,\n(-P[1][i][1]*c+P[1][i][2]*d+P[1][i][3]* a- P[1][i][4]*b)/n,\n(P[1][i][1]*b-P[1][i][2]*a+P[1][i][3]*d- P[1][i][ 4]*c)/n],\ni=1..nops(P[1]))],P[2]];\nend:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 6 " " }{TEXT 265 9 "Perspproj" } {TEXT -1 51 " is a procedure which takes a polytope P, a vector " } {TEXT 259 1 "v" }{TEXT -1 416 ", and a factor f, and projects the vert ices of P onto the hyperplane orthogonal to v, with a perspective dist ance factor of f. For large values of f, the object will be perspecte d as if it was viewed from far away. Thus, the effects of perspective will be minimal. Smaller values of f will generate a perspective eff ect in the projection. Values must be greater than 1, and this often \+ results in a division by 0." }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 507 "per spproj:=proc(P,v,f) local a,b,c,d,n,i,p1,p2,p3,p4,g,q1,q2,q3,q4;\na:=v [1];b:=v[2];c:=v[3];d:=v[4];\nn:=sqrt(a^2+b^2+c^2+d^2);\nfor i from 1 \+ to nops(P[1]) do;\np1:=P[1][i][1];p2:=P[1][i][2];\np3:=P[1][i][3];p4:= P[1][i][4];\np1:=p1-f*a/n;p2:=p2-f*b/n;\np3:=p3-f*c/n;p4:=p4-f*d/n;\ng :=-n*f/(a*p1+b*p2+c*p3+d*p4);\nq1[i]:=g*p1;q2[i]:=g*p2;q3[i]:=g*p3;q4[ i]:=g*p4;\nod;\n[[seq([(q1[i]*d+q2[i]*c-q3[i]*b-q4[i]*a)/n,\n(-q1[i]*c +q2[i]*d+q3[i]*a-q4[i]*b)/n,\n(q1[i]*b-q2[i]*a+q3[i]*d-q4[i]*c)/n],\ni =1..nops(P[1]))],P[2]];\nend:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT -1 6 " " }{TEXT 264 10 "Polydecode" }{TEXT -1 185 " is a procedure which takes a polytope P and lists the coordin ates of the vertices of each polygonal face. This defines the polytop e by its faces, allowing polygonplot3D to display it." }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 103 "polydecode:=proc(P) local i,j;\n[seq([seq(P[1][ P[2][i][j]],j=1..nops(P[2][i]))],\ni=1..nops(P[2]))];\nend:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 6 " " }{TEXT 263 8 "Multpoly" }{TEXT -1 178 " is a procedure which take a polytope \+ P and a rotation matrix M and multiplies each of the vertices (thought of as column matrices) by M, generating a rotation about some vector \+ " }{TEXT 260 1 "v" }{TEXT -1 1 "." }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 358 "multpoly:=proc(P,M) local i;\n[[seq([M[1,1]*P[1][i][1]+M[1,2]*P[1 ][i][2]+M[1,3]*P[1][i][3]+M[1,4]*P[1][i][4],\nM[2,1]*P[1][i][1]+M[2,2] *P[1][i][2]+M[2,3]*P[1][i][3]+M[2,4]*P[1][i][4],\nM[3,1]*P[1][i][1]+M[ 3,2]*P[1][i][2]+M[3,3]*P[1][i][3]+M[3,4]*P[1][i][4],\nM[4,1]*P[1][i][1 ]+M[4,2]*P[1][i][2]+M[4,3]*P[1][i][3]+M[4,4]*P[1][i][4]],\ni=1..nops(P [1]))],P[2]];\nend:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 " " {TEXT -1 6 " " }{TEXT 261 8 "Getpoint" }{TEXT -1 248 " is a pro cedure which takes a vector v and a number n, which is the number of p oints already generated. The vector v is the list of coordinates whic h is to be permuted. These coordinates are assigned to entries of the point list p, beginning at " }{XPPEDIT 18 0 "p[n+1]" "&%\"pG6#,&%\"n G\"\"\"\"\"\"F'" }{TEXT -1 1 "." }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 109 "getpoint:=proc(v,n) local P,i; global p;\nP:=permute(v): for i from 1 to nops(P) do\n p[i+n]:=P[i]; od;\nend:\n" }}{PARA 0 "" 0 "" {TEXT -1 6 " " }{TEXT 262 8 "Evenperm" }{TEXT -1 276 " is a procedure w hich takes a vector v and a number n, which is the number of points al ready generated. The vector v is the list of coordinates which is to \+ be evenly permuted. These coordinates are evenly permuted, then assig ned to entries of the point list p, beginning at " }{XPPEDIT 18 0 "p[n +1]" "&%\"pG6#,&%\"nG\"\"\"\"\"\"F'" }{TEXT -1 1 "." }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 495 "evenperm:=proc(v,n) local P,Q,i; global p;\nfor i from 1 to 12 do P[i]:=0 od:\nP[1]:=[v[1],v[2],v[3],v[4]]:\nP[2]:=[v[1 ],v[3],v[4],v[2]]:\nP[3]:=[v[1],v[4],v[2],v[3]]:\nP[4]:=[v[2],v[1],v[4 ],v[3]]:\nP[5]:=[v[2],v[3],v[1],v[4]]:\nP[6]:=[v[2],v[4],v[3],v[1]]:\n P[7]:=[v[3],v[1],v[2],v[4]]:\nP[8]:=[v[3],v[2],v[4],v[1]]:\nP[9]:=[v[3 ],v[4],v[1],v[2]]:\nP[10]:=[v[4],v[1],v[3],v[2]]:\nP[11]:=[v[4],v[2],v [1],v[3]]:\nP[12]:=[v[4],v[3],v[2],v[1]]:\nQ:=convert(P,set):\nfor i f rom 1 to nops(Q) do p[i+n]:=Q[i] od;\nend:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 33 "The 600 vertices of the 120-cel l:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "tau:=.5*(1+sqrt(5)):" }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 51 "p:=list(1..600):\nfor i from 1 to 6 00 do p[i]:=0 od:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 990 "getpoint([2,2 ,0,0],0):\ngetpoint([2,-2,0,0],6):\ngetpoint([-2,-2,0,0],18):\ngetpoin t([sqrt(5),1,1,1],24):\ngetpoint([sqrt(5),1,1,-1],28):\ngetpoint([sqrt (5),1,-1,-1],40):\ngetpoint([sqrt(5),-1,-1,-1],52):\ngetpoint([-sqrt(5 ),1,1,1],56):\ngetpoint([-sqrt(5),1,1,-1],60):\ngetpoint([-sqrt(5),1,- 1,-1],72):\ngetpoint([-sqrt(5),-1,-1,-1],84):\ngetpoint([tau,tau,tau,t au^(-2)],88):\ngetpoint([tau,tau,-tau,tau^(-2)],92):\ngetpoint([tau,-t au,-tau,tau^(-2)],104):\ngetpoint([-tau,-tau,-tau,tau^(-2)],116):\nget point([tau,tau,tau,-tau^(-2)],120):\ngetpoint([tau,tau,-tau,-tau^(-2)] ,124):\ngetpoint([tau,-tau,-tau,-tau^(-2)],136):\ngetpoint([-tau,-tau, -tau,-tau^(-2)],148):\ngetpoint([tau^2,1/tau,1/tau,1/tau],152):\ngetpo int([tau^2,1/tau,1/tau,-1/tau],156):\ngetpoint([tau^2,1/tau,-1/tau,-1/ tau],168):\ngetpoint([tau^2,-1/tau,-1/tau,-1/tau],180):\ngetpoint([-ta u^2,1/tau,1/tau,1/tau],184):\ngetpoint([-tau^2,1/tau,1/tau,-1/tau],188 ):\ngetpoint([-tau^2,1/tau,-1/tau,-1/tau],200):\ngetpoint([-tau^2,-1/t au,-1/tau,-1/tau],212):" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 1135 "evenpe rm([tau^2,tau^(-2),1,0],216):\nevenperm([tau^2,tau^(-2),-1,0],228):\ne venperm([tau^2,-tau^(-2),1,0],240):\nevenperm([tau^2,-tau^(-2),-1,0],2 52):\nevenperm([-tau^2,tau^(-2),1,0],264):\nevenperm([-tau^2,tau^(-2), -1,0],276):\nevenperm([-tau^2,-tau^(-2),1,0],288):\nevenperm([-tau^2,- tau^(-2),-1,0],300):\nevenperm([sqrt(5),1/tau,tau,0],312):\nevenperm([ sqrt(5),1/tau,-tau,0],324):\nevenperm([sqrt(5),-1/tau,tau,0],336):\nev enperm([sqrt(5),-1/tau,-tau,0],348):\nevenperm([-sqrt(5),1/tau,tau,0], 360):\nevenperm([-sqrt(5),1/tau,-tau,0],372):\nevenperm([-sqrt(5),-1/t au,tau,0],384):\nevenperm([-sqrt(5),-1/tau,-tau,0],396):\nevenperm([2, 1,tau,1/tau],408):\nevenperm([2,1,tau,-1/tau],420):\nevenperm([2,1,-ta u,1/tau],432):\nevenperm([2,1,-tau,-1/tau],444):\nevenperm([2,-1,tau,1 /tau],456):\nevenperm([2,-1,tau,-1/tau],468):\nevenperm([2,-1,-tau,1/t au],480):\nevenperm([2,-1,-tau,-1/tau],492):\nevenperm([-2,1,tau,1/tau ],504):\nevenperm([-2,1,tau,-1/tau],416):\nevenperm([-2,1,-tau,1/tau], 428):\nevenperm([-2,1,-tau,-1/tau],540):\nevenperm([-2,-1,tau,1/tau],5 52):\nevenperm([-2,-1,tau,-1/tau],564):\nevenperm([-2,-1,-tau,1/tau],5 76):\nevenperm([-2,-1,-tau,-1/tau],588):" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 382 " The data structure used \+ for the larger 4-polytopes is a list of a list of vertices, whose coor dinates are defined above, and a list of one polygon consisting of all the vertices. This is done due to the large number of faces which mu st be determined by the placement of the vertices. The cells are not \+ listed, as this information is not needed in any of the calculations. " }}{PARA 0 "" 0 "" {TEXT -1 47 "The list structure is: [[vertices],[p olygons]]." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 56 "onetwocell:=[[seq(p[i],i=1..600)],\n[[seq(i,i=1..600) ]]]:" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 257 "" 0 "" {TEXT 268 12 "The 120-cell" }}{PARA 0 "" 0 "" {TEXT 267 9 "Existence" }}{PARA 0 "" 0 "" {TEXT -1 343 " The existence of the 120-cell can be c learly shown by taking the dual of the 600-cell. Every regular polyto pe in any dimension, has a dual. It goes with being regular. The reg ular polygons are all self-duals (one vertex for each edge). The 120- cell has 600 vertices at the center of each of the tetrahedral cells i n the 600-cell." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT 269 29 "Schl\344fli Symbol and Structure" }}{PARA 0 "" 0 "" {TEXT -1 301 " The Schl\344fli symbol for the 120-cell can be determined by reversing the symbol for the 600-cell to \{5, 3, 3\}. \+ Hence, we can see that this polytope is composed of 120 dodecahedra, e ach sharing a face with another cell. Three dodecahedra meet at an ed ge. The vertex figure is a tetrahedron." }}{PARA 0 "" 0 "" {TEXT -1 375 " Each dodecahedron has 30 edges, so counting all of the \+ edges of all of the cells yield 3600 edges. But each of these edges i s counted three times (since three dodecahedra share a single edge). \+ Thus, the number of egdes is 1200. Likewise, the 120 cells separatly \+ have 1440 faces. Since each of these faces is counted twice, the 120- cell has 720 pentagonal faces." }}{PARA 0 "" 0 "" {TEXT 272 10 " \+ " }}{PARA 0 "" 0 "" {TEXT 270 11 "Coordinates" }}{PARA 0 "" 0 "" {TEXT -1 98 " The coordinates of the 120 cell are generated i n all the permutations of (\2612, \2612, 0, 0)," }}{PARA 0 "" 0 "" {TEXT -1 2 "(\261" }{XPPEDIT 18 0 "sqrt(5)" "-%%sqrtG6#\"\"&" }{TEXT -1 17 ", \2611, \2611, \2611), (\261" }{XPPEDIT 18 0 "tau" "I$tauG6\" " }{TEXT -1 3 ", \261" }{XPPEDIT 18 0 "tau" "I$tauG6\"" }{TEXT -1 3 ", \261" }{XPPEDIT 18 0 "tau" "I$tauG6\"" }{TEXT -1 3 ", \261" } {XPPEDIT 18 0 "tau^(-2)" ")%$tauG,$\"\"#!\"\"" }{TEXT -1 9 "), and ( \261" }{XPPEDIT 18 0 "tau^2" "*$%$tauG\"\"#" }{TEXT -1 3 ", \261" } {XPPEDIT 18 0 "tau^(-1)" ")%$tauG,$\"\"\"!\"\"" }{TEXT -1 3 ", \261" } {XPPEDIT 18 0 "tau^(-1)" ")%$tauG,$\"\"\"!\"\"" }{TEXT -1 3 ", \261" } {XPPEDIT 18 0 "tau^(-1)" ")%$tauG,$\"\"\"!\"\"" }{TEXT -1 37 "), and b y the even permutations of (\261" }{XPPEDIT 18 0 "tau^2" "*$%$tauG\"\" #" }{TEXT -1 3 ", \261" }{XPPEDIT 18 0 "tau^(-2)" ")%$tauG,$\"\"#!\"\" " }{TEXT -1 13 ", \2611, 0), (\261" }{XPPEDIT 18 0 "sqrt(5)" "-%%sqrt G6#\"\"&" }{TEXT -1 3 ", \261" }{XPPEDIT 18 0 "tau^(-1)" ")%$tauG,$\" \"\"!\"\"" }{TEXT -1 3 ", \261" }{XPPEDIT 18 0 "tau" "I$tauG6\"" } {TEXT -1 20 ", 0), and (\2612, \2611, \261" }{XPPEDIT 18 0 "tau" "I$ta uG6\"" }{TEXT -1 3 ", \261" }{XPPEDIT 18 0 "tau^(-1)" ")%$tauG,$\"\"\" !\"\"" }{TEXT -1 2 ")." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 249 " The displays of this and the 120-cell pol ytope are done in point style. The lines connecting this many vertice s can appear to be nothing more than a jumbled mess. Furthermore, Map le has difficulty carrying out the extensive calculations." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT 271 9 "Warning! " }} {PARA 0 "" 0 "" {TEXT -1 375 " I have occasionally had probl ems handling some of the calculations I have tried with this polytope. Maple can use up all of the computer's RAM quickly. Apparantly, the software is not 100% efficient. Occasionally, my system has hung. I imagine this will happen far more often on computers with less RAM an d slower processors. So be patient, but be forewarned." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 80 "Here is a vie w of the 600 vertices of the 120-cell projected along (1, 1, 2, 0)." } }{PARA 0 "> " 0 "" {MPLTEXT 1 0 90 "polygonplot3d(polydecode(project(o netwocell,[1,1,2,0])),scaling=constrained,style=point);\n" }}{PARA 0 " " 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 82 "We can var y the projection vector to get a sequence of views. Here is an exampl e." }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 190 "display([seq(polygonplot3d(p olydecode(project(onetwocell,[1,evalf(sin(Pi*k/10),2),evalf(sin(Pi*k/1 0),2),evalf(sin(Pi*k/10),2)]))),k=0..10)],insequence=true,scaling=cons trained,style=point);\n" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 49 "Here i s a perspective projection of the 120-cell." }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 93 "polygonplot3d(polydecode(perspproj(onetwocell,[1,0,0, 0],4)),scaling=constrained,style=point);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 151 "I have yet to get this r otation image to work. My computer keeps hanging. But here is the co de for looking along an axis as the 120-cell rotates 60\260." }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 92 "i:='i':t:=i*Pi/15:\nM:=array([[cos(t),-si n(t),0,0],[sin(t),cos(t),0,0],[0,0,1,0],[0,0,0,1]]);" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 144 "display([seq(polygonplot3d(polydecode(perspproj (multpoly(onetwocell,M),[0,0,0,1],7)),scaling=constrained,style=point) ,i=1..5)],insequence=true);" }}}}{MARK "0 0" 0 }{VIEWOPTS 1 1 0 1 1 1803 }