{VERSION 5 0 "SUN SPARC SOLARIS" "5.0" }
{USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 0 
1 0 0 0 0 1 }{CSTYLE "2D Math" -1 2 "Times" 0 1 0 0 0 0 0 0 2 0 0 0 0 
0 0 1 }{CSTYLE "2D Output" 2 20 "" 0 1 0 0 255 1 0 0 0 0 0 0 0 0 0 1 }
{PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "New century schoolbook" 1 
18 0 0 0 0 1 1 2 0 0 0 0 0 0 1 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }
{PSTYLE "Text Output" -1 2 1 {CSTYLE "" -1 -1 "Courier" 1 10 0 0 255 
1 0 0 0 0 0 1 3 0 0 1 }1 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Headi
ng 1" 0 3 1 {CSTYLE "" -1 -1 "" 1 18 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }1 0 
0 0 6 6 0 0 0 0 0 0 -1 0 }{PSTYLE "Heading 2" 3 4 1 {CSTYLE "" -1 -1 "
" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }0 0 0 -1 4 4 0 0 0 0 0 0 -1 0 }
{PSTYLE "Warning" 2 7 1 {CSTYLE "" -1 -1 "" 0 1 0 0 255 1 0 0 0 0 0 0 
1 0 0 1 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Maple Output" 0 11 
1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }3 3 0 -1 -1 -1 
0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 0" -1 256 1 {CSTYLE "" -1 -1 "Helve
tica" 1 18 0 0 0 0 2 1 2 0 0 0 0 0 0 1 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 
0 }{PSTYLE "R3 Font 2" -1 257 1 {CSTYLE "" -1 -1 "Helvetica" 1 14 0 0 
0 0 2 1 2 0 0 0 0 0 0 1 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 \+
Font 3" -1 258 1 {CSTYLE "" -1 -1 "Helvetica" 1 24 0 0 0 0 2 1 2 0 0 
0 0 0 0 1 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 4" -1 
259 1 {CSTYLE "" -1 -1 "Helvetica" 1 24 0 0 0 0 2 1 2 0 0 0 0 0 0 1 }
0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 5" -1 260 1 {CSTYLE 
"" -1 -1 "Helvetica" 1 24 0 0 0 0 2 1 2 0 0 0 0 0 0 1 }0 0 0 -1 -1 -1 
0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 6" -1 261 1 {CSTYLE "" -1 -1 "Helve
tica" 1 24 0 0 0 0 2 1 2 0 0 0 0 0 0 1 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 
0 }{PSTYLE "R3 Font 7" -1 262 1 {CSTYLE "" -1 -1 "Helvetica" 1 14 0 0 
0 0 2 1 2 0 0 0 0 0 0 1 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 
0 263 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }3 0 0 -1 
-1 -1 0 0 0 0 0 0 -1 0 }}
{SECT 0 {PARA 263 "" 0 "" {TEXT -1 71 "\nMAPLE WORKSHEET #5: Platonic \+
and Archimedean Solids and Truncations.\n\n" }}{PARA 0 "" 0 "" {TEXT 
-1 1730 "The following  Maple session creates some graphics of the Pla
tonic and Archimedean Solids. Reference points: [1,1,1] and [g,1,0], w
here g=(1+sqrt(5))/2 is the golden section. Transformations: H(0)=iden
tity; H(l)= half-turn around the l-th coordinate axis, l=1..3; Q=quart
er turn around the x-axis; C=rotation around the axis through [1,1,1] \+
with angle 2*Pi/3; R= rotation around the axis through [g,1,0] with an
gle 2*Pi/5. Relations: C^3=R^5=I, CRCR=I. Polyhedra: The vertices of a
 (regular) tetrahedron are given by a(k)=H(k)[1,1,1], k=0..3. Its reci
procal tetrahedron has vertices b(k)=H(k)[-1,-1,-1], k=0..3. A face of
 an octahedron has vertices C^l [2,0,0], l=1..3; the 6 vertices of the
 octahedron are C^l [2,0,0] and C^l [-2,0,0], l=1..3. The intersection
 of the two tetrahedra is another octahedron. The reciprocal pair of t
he two tetrahedra are inscribed in a cube with vertices a(k), b(k), k=
0..3. A face of an icosahedron has vertices p(l)=C^l [g,1,0], l=1..3. \+
The 12 vertices of the icosahedron are H(k)p(l), k=0..3, l=1..3. A col
or group consisting of 4 disjoint faces is given by the H(k)-images, k
=0..3, of the initial face [p(1),p(2),p(3)]. The R^n-images, n=1..5, o
f these give the 5 color groups. The faces in one color group extend t
o a tetrahedron;  we thus have  a compound of 5 tetrahedra. A face of \+
a dodecahedron has vertices R^n[1,1,1], n=1..5. The 20 faces of the do
decahedron are obtained by applying suitable powers of C and R to the \+
initial face. The cube created above is inscribed in the dodecahedron.
  5 cubes inscribed in the dodecahedron are the R^n-images, n=1..5, of
 the initial cube. Trunc of a geometric object truncates the object al
ong the vertex figures. Vertfig is complementary to trunc. " }}{SECT 
1 {PARA 3 "" 0 "" {TEXT -1 23 "Load the plots package:" }}{EXCHG 
{PARA 0 "> " 0 "" {MPLTEXT 1 0 28 "with(plots):with(plottools):" }}
{PARA 7 "" 1 "" {TEXT -1 43 "Warning, the name arrow has been redefine
d\n" }}{PARA 7 "" 1 "" {TEXT -1 43 "Warning, the name arrow has been r
edefined\n" }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 25 "The five Platonic
 solids:" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 71 "z1:=polyhedraplo
t([3,0,0],polytype=tetrahedron,\nthickness=3,color=red):" }}}{EXCHG 
{PARA 0 "> " 0 "" {MPLTEXT 1 0 79 "z2:=polyhedraplot([-0.5,0.5,0.5],po
lytype=hexahedron,\nthickness=3,color=green):" }}}{EXCHG {PARA 0 "> " 
0 "" {MPLTEXT 1 0 88 "z3:=polyhedraplot([-3.6,0,0],polytype=octahedron
,\npolyscale=1.6,thickness=3,color=blue):" }}}{EXCHG {PARA 0 "> " 0 "
" {MPLTEXT 1 0 77 "z4:=polyhedraplot([-1.5,0,-3],polytype=dodecahedron
,\nthickness=3,color=gold):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 
81 "z5:=polyhedraplot([1.5,0,-3],polytype=icosahedron,\nthickness=3,co
lor=aquamarine):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 148 "displa
y3d(\{z1,z2,z3,z4,z5\},\nstyle=wireframe,\nscaling=constrained,orienta
tion=[100,66],\ntitlefont=[TIMES,ROMAN,22],title=`The Five Platonic So
lids`);" }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 38 "Triangle in space wi
th given vertices:" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 98 "tri:=
\n(x1,x2,x3)->polygonplot3d(\nmap( (x->convert(x,list)), [x1,x2,x3]),
\nstyle=line, thickness=3):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 
29 "tri([1,0,0],[0,1,0],[0,0,1]);" }}}{EXCHG {PARA 0 "> " 0 "" 
{MPLTEXT 1 0 75 "display3d(tri([1,0,0],[0,1,0],[0,0,1]),\nshading=zhue
, lightmodel=`light3`);" }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 52 "Colo
red triangle in space with given vertex-vectors:" }}{EXCHG {PARA 0 "> \+
" 0 "" {MPLTEXT 1 0 138 "coltri:=\n(x1,x2,x3,c1,c2,c3)->polygonplot3d(
\nmap( (x->convert(x,list)), [x1,x2,x3]),\nstyle=patch, thickness=2, c
olor=COLOR(RGB,c1,c2,c3)):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 
38 "coltri([1,0,0],[0,1,0],[0,0,1],1,1,0);" }}}}{SECT 1 {PARA 3 "" 0 "
" {TEXT -1 41 "Tetrahedron in space with given vertices:" }}{EXCHG 
{PARA 0 "> " 0 "" {MPLTEXT 1 0 81 "tet:=\n(x1,x2,x3,x4)->\{seq( \ntri(
 op(subsop(k=NULL, [x1,x2,x3,x4])) ), \nk=1..4) \}:" }}}{EXCHG {PARA 
0 "> " 0 "" {MPLTEXT 1 0 34 "op(subsop(2=NULL, [x1,x2,x3,x4]));" }}
{PARA 11 "" 1 "" {XPPMATH 20 "6%%#x1G%#x3G%#x4G" }}}{EXCHG {PARA 0 "> \+
" 0 "" {MPLTEXT 1 0 48 "display3d(tet([1,0,0],[0,1,0],[0,0,1],[1,1,1])
);" }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 49 "Colored tetrahedron in sp
ace with given vertices:" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 106 
"coltet:=\n(x1,x2,x3,x4,c1,c2,c3)->\n\{ seq( \ncoltri(op(subsop(k=NULL
, [x1,x2,x3,x4])), c1,c2,c3), \nk=1..4) \}:" }}}{EXCHG {PARA 0 "> " 0 
"" {MPLTEXT 1 0 57 "display3d(coltet([1,0,0],[0,1,0],[0,0,1],[1,1,1],1
,0,0));" }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 55 "Tetrahedron  in wire
frame in space with given vertices:" }}{EXCHG {PARA 0 "> " 0 "" 
{MPLTEXT 1 0 148 "wiretet:=\n(x1,x2,x3,x4)->\n\{ seq( seq(\nline(\nop(
 subsop(l=NULL, subsop(k=NULL, \nmap( (x->convert(x,list)), [x1,x2,x3,
x4] )\n)))\n), \nk=1..4),\nl=1..3)\}:" }}}{EXCHG {PARA 0 "> " 0 "" 
{MPLTEXT 1 0 86 "display3d(wiretet([1,0,0],[0,1,0],[0,0,1],[1,1,1]),\n
thickness=3, lightmodel=`light3`);" }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT 
-1 60 "Colored wireframe tetrahedron  in space with given vertices:" }
}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 202 "wirecoltet := (x1,x2,x3,x4
,c1,c2,c3)->\n\{ seq( seq(\nline( \nop( subsop(l=NULL, subsop(k=NULL, \+
\nmap( (x->convert(x,list)), [x1,x2,x3,x4] )\n))), color=COLOR(RGB,c1,
c2,c3), thickness=3\n), \nk=1..4),\nl=1..3)\}:" }}}{EXCHG {PARA 0 "> \+
" 0 "" {MPLTEXT 1 0 75 "display3d(\nwirecoltet([1,0,0],[0,1,0],[0,0,1]
,[1,1,1],1,0,0),\nthickness=3);" }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 
17 " Transformations:" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 243 "H(
0):=array(1..3,1..3,identity):\nH(1):=array([[1,0,0], [0,-1,0], [0,0,-
1]]):\nH(2):=array([[-1,0,0], [0,1,0], [0,0,-1]]):\nH(3):=array([[-1,0
,0], [0,-1,0], [0,0,1]]):\nQ:=array([[1,0,0], [0,0,-1], [0,1,0]]):\nC:
=array([[0,0,1], [1,0,0], [0,1,0]]):" }}}}{SECT 1 {PARA 3 "" 0 "" 
{TEXT -1 39 "The golden section and refrence points:" }}{EXCHG {PARA 
0 "> " 0 "" {MPLTEXT 1 0 103 "g:=(1+sqrt(5))/2:\na:=k->evalm(H(k)&*[1,
1,1]):\nb:=k->evalm(-H(k)&*[1,1,1]):\np:=l->evalm(C^(l)&*[g,1,0]):" }}
}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "a(2);" }}{PARA 11 "" 1 "" 
{XPPMATH 20 "6#-%'vectorG6#7%!\"\"\"\"\"F'" }}}}{SECT 1 {PARA 3 "" 0 "
" {TEXT -1 65 "Plot a reciprocal pair of  tetrahedra with prescribed R
GB colors:" }}{PARA 0 "" 0 "" {TEXT -1 35 "Vertfigtri is a set of 3 tr
iangles." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 218 "vertfigtri:=\n(
x1,x2,x3,c1,c2,c3)->\n\{\ncoltri(x1, evalm((x1+x2)/2), evalm((x1+x3)/2
), c1, c2, c3),\ncoltri(x2, evalm((x2+x3)/2), evalm((x2+x1)/2), c1, c2
, c3),\ncoltri(x3, evalm((x3+x1)/2), evalm((x3+x2)/2), c1, c2, c3)\n\}
:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 92 "display3d(vertfigtri(s
eq(a(k),k=1..3),1,0.4,0.7),\nscaling=constrained, orientation=[46,62])
;" }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 94 "We concatenate the 3 trian
gles in vertfigtri  for each face of the tetrahedron by using `op'. " 
}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 116 "vertfigtet:=\n(x1,x2,x3,x
4,c1,c2,c3)->\n\{seq( op(\nvertfigtri(op(subsop(k=NULL, [x1,x2,x3,x4])
), c1,c2,c3)\n), k=1..4)\}:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 
92 "display3d(vertfigtet(seq(a(k),k=0..3),1,0.4,0.7),\nscaling=constra
ined, orientation=[46,62]);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 
205 "display3d(\nvertfigtet(seq(a(k),k=0..3),1,0.4,0.7) union\nvertfig
tet(seq(b(k),k=0..3),0.5,1,0.8),\nscaling=constrained, orientation=[78
,83],\ntitlefont=[TIMES,ROMAN,22], title=`Reciprocal Pair of Tetrahedr
a`);" }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 95 "Trunctri  is a single t
riangle obtained from a triangle by truncating along the vertex figure
s." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 144 "trunctri := (x1,x2,x3
,c1,c2,c3)->\ncoltri( \nop( map( (x->convert(x,list)), \n[evalm((x1+x2
)/2), evalm((x2+x3)/2), evalm((x1+x3)/2)]) ), c1,c2,c3):" }}}}{SECT 1 
{PARA 3 "" 0 "" {TEXT -1 59 "Trunctet is trunctri applied to the faces
 of a tetrahedron:" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 105 "trunc
tet:=(x1,x2,x3,x4,c1,c2,c3)->\n\{seq( trunctri(op(subsop(k=NULL, [x1,x
2,x3,x4])), c1,c2,c3), k=1..4)\}:" }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT 
-1 62 "The octahedral intersection of a reciprocal pair of tetrahdra:
" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 286 "twinocta:=display3d(\{
\nop(trunctet(a(0),a(1),a(2),a(3),1,0.4,0.7)), \nop(trunctet(b(0),b(1)
,b(2),b(3),0.5,1,0.8)), \nop(wirecoltet(a(0),a(1),a(2),a(3),1,0.4,0.7)
), \nop(wirecoltet(b(0),b(1),b(2),b(3),0.5,1,0.8)) \}):\ndisplay3d(twi
nocta,scaling=constrained, thickness=3, orientation=[77,71]);" }}}}
{SECT 1 {PARA 3 "" 0 "" {TEXT -1 46 "A paralleogram in space with 3 gi
ven vertices:" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 110 "par := (x0
,x1,x2)->polygonplot3d(\nmap(x->convert(x,list), [x1,x2,evalm(x1+x2-x0
)]),\nstyle=patch, thickness=2):" }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT 
-1 54 "A colored paralleogram in space with 3 given vertices:" }}
{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 153 "colpar := (x0,x1,x2,c1,c2,c
3)->polygonplot3d(\nmap(x->convert(x,list), [x1,x0,x2,evalm(x1+x2-x0)]
),\nstyle=patch, thickness=2, color=COLOR(RGB,c1,c2,c3) ):" }}}}{SECT 
1 {PARA 3 "" 0 "" {TEXT -1 48 "A parallelepiped in space with 4 given \+
vertices:" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 206 "parpip := (x0,
x1,x2,x3)->\n\{ par(x0,x1,x2), par(x0,x2,x3), par(x0,x1,x3),\n   par(x
1,evalm(x1+x2-x0),evalm(x1+x3-x0)),\n   par(x2,evalm(x1+x2-x0),evalm(x
2+x3-x0)),\n   par(x3,evalm(x1+x3-x0),evalm(x2+x3-x0)) \}:" }}}}{SECT 
1 {PARA 3 "" 0 "" {TEXT -1 56 "A colored parallelepiped in space with \+
4 given vertices:" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 272 "colpar
pip := (x0,x1,x2,x3,c1,c2,c3)->\n\{ par(x0,x1,x2,c1,c2,c3), par(x0,x2,
x3,c1,c2,c3), par(x0,x1,x3,c1,c2,c3),\n   par(x1,evalm(x1+x2-x0),evalm
(x1+x3-x0),c1,c2,c3),\n   par(x2,evalm(x1+x2-x0),evalm(x2+x3-x0),c1,c2
,c3),\n   par(x3,evalm(x1+x3-x0),evalm(x2+x3-x0),c1,c2,c3) \}:" }}}}
{SECT 1 {PARA 3 "" 0 "" {TEXT -1 70 " Plot a cube and the reciprocal o
ctahedron with prescribed RGB colors:" }}{EXCHG {PARA 0 "> " 0 "" 
{MPLTEXT 1 0 78 "c:=(k,l)->evalm(H(k)&*C^(l)&*[2,0,0]):\nd:=(k,l)->eva
lm(H(k)&*C^(l)&*[-2,0,0]):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 
145 "vertfigocta := display3d(\nseq(vertfigtri(c(k,1),c(k,2),c(k,3),1,
0.4,0.7), k=0..3) union\nseq(vertfigtri(d(k,1),d(k,2),d(k,3),1,0.4,0.7
), k=0..3)):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 194 "display3d(
\nseq(vertfigtri(c(k,1),c(k,2),c(k,3),1,0.4,0.7), k=0..1),\nscaling=co
nstrained, orientation=[-21,73], axes=normal,\ntitlefont=[TIMES,ROMAN,
22],\ntitle=`The Action of the Half-turn H(1)`);" }}}{EXCHG {PARA 0 ">
 " 0 "" {MPLTEXT 1 0 190 "display3d(\nseq(vertfigtri(c(k,1),c(k,2),c(k
,3),1,0.4,0.7), k=0..3),\nscaling=constrained, orientation=[-21,73], a
xes=normal,\ntitlefont=[TIMES,ROMAN,22],\ntitle=`The Action of the Hal
f-turns`);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 44 "display3d(ver
tfigocta, scaling=constrained);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 
1 0 231 "display3d(\{ seq( \ncoltri(\nop( map((x->evalm(Q^n&*x)), [[1,
1,1],[1,1,0],[1,0,1]]) ), \nn-3.5,1,1), \nn=1..4)\}, \naxes=boxed, tic
kmarks=[0,0,0], scaling=constrained,\ntitlefont=[TIMES,ROMAN,22],\ntit
le=`The Action of the Quarter Turn Q`);" }}}{EXCHG {PARA 0 "> " 0 "" 
{MPLTEXT 1 0 170 "vertfigcube := display3d(\{ \nseq( seq( seq( \ncoltr
i(\nop( map( (x->evalm((-1)^(s)*C^l&*Q^n&*x)), \n[[1,1,1],[1,1,0],[1,0
,1]] )), \n0.5,1,0.8), \nn=1..4), l=1..3), s=0..1) \n\}):" }}}{EXCHG 
{PARA 0 "> " 0 "" {MPLTEXT 1 0 129 "display3d(vertfigcube,\nscaling=co
nstrained,orientation=[70,69],\ntitlefont=[TIMES,ROMAN,22],\ntitle=`A \+
Cube with Squares Removed`);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 
0 161 "display3d(\{vertfigocta, vertfigcube\},\nscaling=constrained,or
ientation=[70,69],\ntitlefont=[TIMES,ROMAN,22],\ntitle=`Reciprocal Pai
r of an Octahedron and a Cube `);" }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT 
-1 36 "Define the faces of a cuboctahedron:" }}{EXCHG {PARA 0 "> " 0 "
" {MPLTEXT 1 0 141 "truncocta := display3d(\{ \nseq(trunctri(seq(c(k,l
),l=1..3), 1, 0.4, 0.7), k=0..3),\nseq(trunctri(seq(d(k,l),l=1..3), 1,
 0.4, 0.7), k=0..3) \n\}):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 
121 "display3d(truncocta,\nscaling=constrained, orientation=[70,75],\n
titlefont=[TIMES,ROMAN,22], title=`Truncated Octahedron`);" }}}{EXCHG 
{PARA 0 "> " 0 "" {MPLTEXT 1 0 153 "trunccube := display3d(\{ \nseq( s
eq( \ncolpar(\nop( map( (x->evalm((-1)^(s)*C^(l)&*x)), \n[[1,1,0],[1,0
,1],[1,0,-1]] )),\n0.5, 1, 0.8), \nl=1..3), s=0..1) \n\}):" }}}{EXCHG 
{PARA 0 "> " 0 "" {MPLTEXT 1 0 115 "display3d(trunccube,\nscaling=cons
trained, orientation=[70,75],\ntitlefont=[TIMES,ROMAN,22], title=`Trun
cated Cube`);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 127 "display3d
(\{truncocta, trunccube\},\nscaling=constrained, orientation=[70,75],
\ntitlefont=[TIMES,ROMAN,22], title=`Cuboctahedron`);" }}}}{SECT 1 
{PARA 3 "" 0 "" {TEXT -1 21 " 3 golden rectangles:" }}{EXCHG {PARA 0 "
> " 0 "" {MPLTEXT 1 0 253 "goldrecs := display3d(\{ \nseq( seq( \ncolp
ar(\nop( map( (x->evalm(H(k)&*C^l&*x)), \n[[0,0,0],[0,1,0],[g,0,0] ] )
),\nl/3, 1, 1-l/3), \nk=0..3), l=1..3) \n\}):\ndisplay3d(goldrecs,\nsc
aling=constrained,\ntitlefont=[TIMES,ROMAN,22], \ntitle=`Three Golden \+
Rectangles`);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 192 "fitface :
= \ncoltri( seq(evalm(C^(l)&*[g,1,0]), l=1..3 ), 1, 0, 0):\ndisplay3d(
\{goldrecs,fitface\},\norientation=[44,61], scaling=constrained,\ntitl
efont=[TIMES,ROMAN,22], title=`Fitting a Face `);" }}}{EXCHG {PARA 0 "
> " 0 "" {MPLTEXT 1 0 194 "axis := line([0,0,0], [1.4*g, 1.4, 0], \nco
lor=blue, thickness=3): display3d(\{goldrecs,fitface,axis\},\nscaling=
constrained,orientation=[16,76], \ntitlefont=[TIMES,ROMAN,22], title=`
Rotation Axis`);" }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 46 "Rotation ar
ound the x-axis with angle 2*Pi/5: " }}{EXCHG {PARA 0 "> " 0 "" 
{MPLTEXT 1 0 86 "A := array(\n[ [1,0,0], [0,cos(2*Pi/5),-sin(2*Pi/5)],
 \n[0,sin(2*Pi/5),cos(2*Pi/5)] ] ):" }}}}{SECT 1 {PARA 3 "" 0 "" 
{TEXT -1 213 "Rotation around the z-axis sending  [1, 0, 0]  to   [g/s
qrt(g^2+1), 1/sqrt(g^2+1), 0]:                                        \+
                                                                      \+
                 " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 73 "r1 := f
actor(g/sqrt(g^2+1),sqrt(5)):\nr2 := factor(1/sqrt(g^2+1),sqrt(5)):" }
}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 55 "B := array( [ [r1, -r2, 0]
, [r2, r1, 0], [0, 0, 1] ] ):" }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 
60 "Rotation around the axis through [g,1,0]  with angle 2*Pi/5:" }}
{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 30 "R :=evalm(B&*A&*transpose(B)
):" }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 43 "We can simplify the entri
es by using evalf:" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "R:=map
( X-> evalf(X,4), R);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"RG-%'matr
ixG6#7%7%$\"%*3)!\"%$\"%\"4$F,$\"%+]F,7%F-$\"%)*\\F,$!%!4)F,7%$!%+]F,$
\"%!4)F,$\"%(3$F," }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 38 "Rotate the
 fitted face around an axis:" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 
248 "rotfaces := seq( tri( seq( evalm( R^(n)&*C^(l)&*[g, 1, 0]), l=1..
3) ), n=1..5):\ndisplay3d(\{ goldrecs, fitface, axis, rotfaces \},\nst
yle=line,  scaling=constrained,orientation=[16,76], shading=z,\ntitlef
ont=[TIMES,ROMAN,22], title=`Rotating a Face `);" }}}}{SECT 1 {PARA 3 
"" 0 "" {TEXT -1 24 "The colored icosahedron:" }}{EXCHG {PARA 0 "> " 
0 "" {MPLTEXT 1 0 71 "p:=l->evalm(C^(l)&*[g,1,0]): \nicosa:=(n,k,l)->e
valm(R^(n)&*H(k)&*p(l)):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 84 
"colgr := (n,c1,c2,c3)->\nseq( coltri( seq( icosa(n,k,l), l=1..3), c1,
c2,c3), k=0..3):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 127 "colors
 :=  \n[[0.090, 0.565, 1.000],[0.302, 0.000, 1.0000],[0.212, 0.910, 0.
486],[1.000, 0.341, 0.1330],[0.788, 0.000, 0.5801]]:" }}}{EXCHG {PARA 
0 "> " 0 "" {MPLTEXT 1 0 61 "colicosa := display3d(\{ seq(colgr(n,op(c
olors[n])),n=1..5)\}):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 96 "d
isplay(colicosa,\nscaling=constrained,\ntitlefont=[TIMES,ROMAN,22], ti
tle=`Colored Icosahedron`);" }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 49 "
Icosahedron wireframe on the 3 golden rectangles:" }}{EXCHG {PARA 0 ">
 " 0 "" {MPLTEXT 1 0 94 "wireicosa := display3d(\n\{ seq( \nseq( tri( \+
seq( icosa(n,k,l), l=1..3)), k=0..3), \nn=1..5) \} ): " }}}{EXCHG 
{PARA 0 "> " 0 "" {MPLTEXT 1 0 140 "display3d(\{wireicosa,colgr(1,1,0,
1)\},\nstyle=line,scaling=constrained,\ntitlefont=[TIMES,ROMAN,22], \n
title=`Icosahedron and one color group`);" }}}{EXCHG {PARA 0 "> " 0 "
" {MPLTEXT 1 0 86 "display3d(wireicosa,\nstyle=line, color=blue, scali
ng=constrained,orientation=[16,76]);" }}}{EXCHG {PARA 0 "> " 0 "" 
{MPLTEXT 1 0 191 "display3d(\{ goldrecs, fitface, axis, wireicosa \},
\nstyle=line,  scaling=constrained,orientation=[16,76], shading=z,\nti
tlefont=[TIMES,ROMAN,22], \ntitle=`Icosahedron and the Golden Rectangl
es`);" }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 290 "Extend each face in o
ne color group to obtain a tetrahedron. The vertices of one  tetrahedr
on are [-(g+1),-(g+1),-(g+1)] and its H(n)-images. (This follows since
 the midpoint of the face [[g,1,0],[1,0,g],[0,g,1]] is [(g+1)/3,(g+1)/
3,(g+1)/3] and the origin splits the altitude in ratio 3:1." }}{EXCHG 
{PARA 0 "> " 0 "" {MPLTEXT 1 0 52 "exttetra:=(n,k)->evalm(-(g+1)*R^(n)
&*H(k)&*[1,1,1]):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 79 "wirete
tra := (n,c1,c2,c3)-> \nwirecoltet(seq(exttetra(n,k),k=0..3), c1, c2, \+
c3):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 251 "display3d(\{ \nseq
( coltri( seq( icosa(1,k,l), l=1..3), 0,1,1), k=0..3),\nseq(seq(tri( s
eq( icosa(n,k,l), l=1..3)),k=0..3),n=1..5) \n\},\nstyle=line, color=bl
ue, orientation=[70,90], scaling=constrained,\ntitlefont=[TIMES,ROMAN,
22], title=`One Color Group`);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 
1 0 219 "display3d(\{ \nseq( coltri( seq(icosa(1,k,l),l=1..3),0,0,1), \+
k=0..3),\nseq( seq( tri( seq(icosa(n,k,l),l=1..3)), k=0..3), n=1..5),
\nop(wiretetra(1,0,0,1))\n\},\nstyle=line, color=red, orientation=[70,
90], scaling=constrained);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 
193 "display3d(\{ \nseq( op(wiretetra(n, op(colors[n]))), n=1..5) \n\}
,\nscaling=constrained,orientation=[69,79],\ntitlefont=[TIMES,ROMAN,22
],\ntitle=`Five Tetrahedra Circumscribed Around an Icosahedron`);" }}}
}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 31 "The vertices of a dodecahedron:
" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 75 "cap := s->polygonplot3d(
 [seq( evalm((-1)^(s)*R^(n)&*[1,1,1]), n=1..5) ] ):" }}}{EXCHG {PARA 
0 "> " 0 "" {MPLTEXT 1 0 185 "display3d(\{ goldrecs, fitface, rotfaces
, cap(0) \},\nstyle=line, thickness=4, orientation=[35,83], scaling=co
nstrained, shading=z,\ntitlefont=[TIMES,ROMAN,22], title=`Fitting a Pe
ntagon`);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 86 "display3d(\{se
q(cap(s),s=0..1)\},\nstyle=patch,scaling=constrained,orientation=[-40,
82]);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 89 "belt:=(m,s)->polyg
onplot3d( \n[seq( evalm((-1)^(s)*R^(m)&*C&*R^(n)&*[1,1,1]), n=1..5) ] \+
):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 89 "display3d(\{seq(belt(
m,0),m=1..5)\},\nstyle=patch,scaling=constrained,orientation=[-40,82])
;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 96 "display3d(\{cap(0),seq
(belt(m,0),m=1..5)\},\nstyle=patch,scaling=constrained,orientation=[-4
0,82]);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 206 "dodec := displa
y3d(\n\{ seq(cap(s), s=0..1), seq( seq( belt(m,s), m=1..5), s=0..1) \}
,\nstyle=patch,scaling=constrained,orientation=[-40,82]):\ndisplay3d(d
odec,\ntitlefont=[TIMES,ROMAN,22], title=`Dodecahedron`);" }}}{EXCHG 
{PARA 0 "> " 0 "" {MPLTEXT 1 0 161 "wiredodec := display3d(\n\{ seq(ca
p(s), s=0..1), seq( seq( belt(m,s), m=1..5), s=0..1) \},\nstyle=wirefr
ame, thickness=3, scaling=constrained, orientation=[38,72] ):" }}}
{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 180 "display3d(\{ goldrecs, wire
icosa, wiredodec \},\nstyle=line, thickness=4, orientation=[35,83], sc
aling=constrained, shading=z,\ntitlefont=[TIMES,ROMAN,22], title=`The \+
Two Wireframes`);" }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 77 "Define the
 faces of the reciprocal pair of an icosahedron and a dodecahedron:" }
}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 112 "vertfigicosa := \n\{ seq( \+
seq( \n   op(vertfigtri(seq(icosa(n,k,l), l=1..3), 1, 0.4, 0.7)), \n  \+
 k=0..3), n=1..5) \}:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 44 "di
splay3d(vertfigicosa,scaling=constrained);" }}}{PARA 0 "" 0 "" {TEXT 
-1 72 "Define the midpoint of an edge of a pentagonal face (and its an
tipodal):" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 64 "mid := s-> eval
m(((-1)^(s)/2)*([1,1,1]+transpose(R)&*[1,1,1])): " }}}{EXCHG {PARA 0 "
> " 0 "" {MPLTEXT 1 0 132 "vertfigcap := (n,s)-> coltri( \nop( map( (x
->evalm(R^(n)&*x)), \n[mid(s), evalm((-1)^(s)*[1,1,1]), evalm(R&*mid(s
))] ) ), \n0.5,1,0.8):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 53 "d
isplay3d(\{seq(seq(vertfigcap(n,s),n=1..5),s=0..1)\});" }}}{EXCHG 
{PARA 0 "> " 0 "" {MPLTEXT 1 0 146 "vertfigbelt := (m,n,s)-> coltri(\n
op( map( (x->evalm(R^(m)&*C&*R^(n)&*x)),\n [mid(s), evalm((-1)^(s)*[1,
1,1]), evalm(R&*mid(s))] ) ), \n0.5, 1, 0.8):" }}}{EXCHG {PARA 0 "> " 
0 "" {MPLTEXT 1 0 95 "display3d(\{ seq( seq( seq(vertfigbelt(m,n,s), m
=1..5), n=1..5), s=0..1) \},scaling=constrained);" }}}{EXCHG {PARA 0 "
> " 0 "" {MPLTEXT 1 0 248 "display3d(\n\{ op(vertfigicosa), \n   seq(s
eq(vertfigcap(n,s),n=1..5),s=0..1),\n   seq(seq(seq(vertfigbelt(m,n,s)
,m=1..5),n=1..5),s=0..1) \},\nscaling=constrained,\ntitlefont=[TIMES,R
OMAN,22],\ntitle=`Reciprocal Pair of an Icosahedron and a Dodecahedron
`);" }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 40 "Define the faces of an i
cosidodecaderon:" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 95 "truncico
sa := \n\{ seq( seq( trunctri(\nseq(icosa(n,k,l), l=1..3), 1,0.4,0.7),
 k=0..3), n=1..5) \}:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 137 "t
runccap := s->polygonplot3d(\n[ seq( evalm((-1)^(s)*R^(n)&*[(1+sqrt(5)
)/4, (3+sqrt(5))/4, 1/2]), n=1..5) ],\ncolor=COLOR(RGB,0.5,1,0.8) ):" 
}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 155 "truncbelt := (m, s)->pol
ygonplot3d(\n[ seq( \nevalm((-1)^(s)*R^(m)&*C&*R^(n)&*[(1+sqrt(5))/4, \+
(3+sqrt(5))/4, 1/2]), \nn=1..5) ],\ncolor=COLOR(RGB,0.5,1,0.8) ):" }}}
{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 212 "display3d(\n\{ op(truncicos
a), \nseq(trunccap(s), s=0..1), \nseq( seq(truncbelt(m,s), m=1..5), s=
0..1) \},\nstyle=patch, scaling=constrained, orientation=[79,76],\ntit
lefont=[TIMES,ROMAN,22], title=`Icosidodecahedron`);" }}}}{SECT 1 
{PARA 3 "" 0 "" {TEXT -1 53 "3 pentagons meeting at a vertex and a ref
erence cube." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 210 "colwirecube
 := (n,c1,c2,c3)->display3d(\{ \nseq( seq( \nline( \nconvert(evalm(R^(
n)&*H(k)&*[1,1,1]),list), \nconvert(evalm(R^(n)&*H(k)&*b(l)),list), \n
color=COLOR(RGB,c1, c2, c3), thickness=3), \nl=1..3), k=0..3) \n\}):" 
}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 121 "display3d(\n\{cap(0),seq
(belt(n,0),n=1..2),colwirecube(1,0,1,1)\},\nstyle=patch, scaling=const
rained, orientation=[-37,97] );" }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 
34 "Samples from the plottools package" }}{SECT 1 {PARA 4 "" 0 "" 
{TEXT -1 27 "Load the plottools package:" }}{EXCHG {PARA 0 "> " 0 "" 
{MPLTEXT 1 0 16 "with(plottools):" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT 
-1 24 "Stellate a dodecahedron:" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 
1 0 73 "display3d(stellate(dodecahedron(),4), \nscaling=constrained, s
tyle=patch);" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 33 "A cutout model \+
of the octahedron:" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 70 "displa
y3d( cutout( octahedron([0,0,0]), 2/3 ), \norientation=[73,73] );" }}}
}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 61 "Convert a plot structure to poly
gon structure and use cutout:" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 
0 97 "p := convert(plot3d(sin(x*y),x=-1..1,y=-1..1,grid=[8,8]), POLYGO
NS):\ndisplay3d( cutout(p, 1/3) );" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT 
-1 106 "Transform  a cutout model of an earlier tetrahedron  by the po
wers of the rotation R and display together:" }}{EXCHG {PARA 0 "> " 0 
"" {MPLTEXT 1 0 16 "with(plottools):" }}}{EXCHG {PARA 0 "> " 0 "" 
{MPLTEXT 1 0 84 "R := array([[.8090, .3090, .5000], [.3090, .5000, -.8
090], [-.5000, .8090, .3090]]):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 
1 0 55 "f:=transform((x,y,z)->convert(evalm(R&*[x,y,z]),list)):" }}}
{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 78 "q:=POLYGONS(seq(\nsubsop(k=N
ULL, [seq( convert(a(l),list),l=0..3)]), \nk=1..4)):" }}}{EXCHG {PARA 
0 "> " 0 "" {MPLTEXT 1 0 45 "display3d( \{cutout(q,4/5),f(cutout(q,4/5
))\});" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 74 "r:=seq(\ntransfor
m((x,y,z)->\nconvert(evalm(R^(n)&*[x,y,z]),list)),\nn=1..5):" }}}
{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 48 "display3d(\{ seq( cutout(r[n
](q),4/5), n=1..5)\});" }}}}}}{MARK "23 0 0" 21 }{VIEWOPTS 1 1 0 3 2 
1804 1 1 1 1 }{PAGENUMBERS 0 1 2 33 1 1 }
