{VERSION 1 0 "X11/Motif" "1.0"}{GLOBALS 3 1}{FONT 0 "-adobe-helve
tica-bold-r-normal--*-180-*-*-*-*-*-*" "helvetica" "Helvetica-Bol
d" 8 18 0 "Helvetica-Bold" 18}{FONT 1 "-adobe-new century schoolb
ook-bold-i-normal--*-180-*-*-*-*-*-*" "new century schoolbook" "T
imes-BoldItalic" 8 18 96 "Times-BoldItalic" 18}{FONT 2 "-adobe-he
lvetica-bold-r-normal--*-140-*-*-*-*-*-*" "helvetica" "Helvetica-
Bold" 8 14 0 "Helvetica-Bold" 14}{FONT 3 "-adobe-helvetica-bold-r
-normal--*-240-*-*-*-*-*-*" "helvetica" "Helvetica-Bold" 8 24 0 "
Helvetica-Bold" 24}{FONT 4 "-adobe-helvetica-bold-r-normal--*-240
-*-*-*-*-*-*" "helvetica" "Helvetica-Bold" 8 24 0 "Helvetica-Bold
" 24}{FONT 5 "-adobe-helvetica-bold-r-normal--*-240-*-*-*-*-*-*" 
"helvetica" "Helvetica-Bold" 8 24 0 "Helvetica-BoldOblique" 24}
{FONT 6 "-adobe-helvetica-bold-r-normal--*-240-*-*-*-*-*-*" "helv
etica" "Helvetica-Bold" 8 24 0 "Helvetica-Bold" 24}{FONT 7 "-adob
e-helvetica-bold-r-normal--*-140-*" "helvetica" "Helvetica-Bold" 
8 14 0 "Helvetica-Bold" 14}{SCP_R 1 0 234{COM_R 2 0{TEXT 1 1854 "
\015Gabor Toth: Platonic and Archimedean Solids and Truncations.\
015\015The following  Maple file  creates some graphics used in  \+
Section 17: The Five Platonic  Solids of  `Glimpses of Algebra an
d Geometry', Springer, 1997. Reference points: [1,1,1] and [g,1,0
], where g=(1+sqrt(5))/2 is the golden section. Transformations: \+
H(0)=identity; H(l)= half-turn around the l-th coordinate axis, l
=1..3; Q=quarter turn around the x-axis; C=rotation around the ax
is through [1,1,1] with angle 2*Pi/3; R= rotation around the axis
 through [g,1,0] with angle 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 reciprocal tetrahedron has vertices
 b(k)=H(k)[-1,-1,-1], k=0..3. A face of an octahedron has vertice
s 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 tetr
ahedra is another octahedron. The reciprocal pair of the two tetr
ahedra 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. T
he 12 vertices of the icosahedron are H(k)p(l), k=0..3, l=1..3. A
 color 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-ima
ges, n=1..5, of these give the 5 color groups. The faces in one c
olor group extend to 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 dodecahedron 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. Tr
unc of a geometric object truncates the object along the vertex f
igures. Vertfig is complementary to trunc. "}}{SEP_R 3 0}{INP_R 4
 0 "> "{TEXT 0 12 "with(plots):"}}{SEP_R 5 0}{INP_R 6 0 "> "{TEXT
 0 70 "z1:=polyhedraplot([3,0,0],polytype=tetrahedron,thickness=3
,color=red):"}}{SEP_R 7 0}{INP_R 8 0 "> "{TEXT 0 78 "z2:=polyhedr
aplot([-0.5,0.5,0.5],polytype=hexahedron,thickness=3,color=green)
:"}}{SEP_R 9 0}{INP_R 10 0 "> "{TEXT 0 87 "z3:=polyhedraplot([-3.
6,0,0],polytype=octahedron,polyscale=1.6,thickness=3,color=blue):
"}}{SEP_R 11 0}{INP_R 12 0 "> "{TEXT 0 76 "z4:=polyhedraplot([-1.
5,0,-3],polytype=dodecahedron,thickness=3,color=gold):"}}{SEP_R 
13 0}{INP_R 14 0 "> "{TEXT 0 80 "z5:=polyhedraplot([1.5,0,-3],pol
ytype=icosahedron,thickness=3,color=aquamarine):"}}{SEP_R 15 0}
{INP_R 16 0 "> "{TEXT 0 141 "display3d(\{z . (1..5)\},style=wiref
rame,scaling=constrained,orientation=[100,66],titlefont=[TIMES,RO
MAN,22],title=`The Five Platonic Solids`);"}}{SEP_R 17 0}{COM_R 
18 0{TEXT 1 43 "Line segment  in space with given vertices:"}}
{SEP_R 19 0}{INP_R 20 0 "> "{TEXT 0 93 "line:=\012(x1,x2)->polygo
nplot3d([convert(x1,list), convert(x2,list)],\012style=line, thic
kness=3):"}}{SEP_R 21 0}{COM_R 22 0{TEXT 1 50 "Colored line segme
nt in space with given vertices:"}}{SEP_R 23 0}{INP_R 24 0 "> "
{TEXT 0 132 "colline:=\012(x1,x2,c1,c2,c3)->polygonplot3d(\012map
( (x->convert(x,list)), [x1,x2]),\012style=line, thickness=3, col
or=COLOR(RGB,c1,c2,c3)):"}}{SEP_R 25 0}{COM_R 26 0{TEXT 1 38 "Tri
angle in space with given vertices:"}}{SEP_R 27 0}{INP_R 28 0 "> \+
"{TEXT 0 85 "tri:=\012(x1,x2,x3)->polygonplot3d(map( (x->convert(
x,list)), [x1,x2,x3]),\012thickness=2):"}}{SEP_R 29 0}{COM_R 30 0
{TEXT 1 52 "Colored triangle in space with given vertex-vectors:"
}}{SEP_R 31 0}{INP_R 32 0 "> "{TEXT 0 138 "coltri:=\012(x1,x2,x3,
c1,c2,c3)->polygonplot3d(\012map( (x->convert(x,list)), [x1,x2,x3
]),\012style=patch, thickness=2, color=COLOR(RGB,c1,c2,c3)):"}}
{SEP_R 33 0}{COM_R 34 0{TEXT 1 41 "Tetrahedron in space with give
n vertices:"}}{SEP_R 35 0}{INP_R 36 0 "> "{TEXT 0 79 "tet:=\012(x
1,x2,x3,x4)->\{seq( tri( op(subsop(k=NULL, [x1,x2,x3,x4])) ), k=1
..4) \}:"}}{OUT_R 37 0 36{TEXT 2 42 "Warning, `k` is implicitly d
eclared local\012"}}{SEP_R 38 0}{COM_R 39 0{TEXT 1 49 "Colored te
trahedron in space with given vertices:"}}{SEP_R 40 0}{INP_R 41 0
 "> "{TEXT 0 104 "coltet:=\012(x1,x2,x3,x4,c1,c2,c3)->\012\{ seq(
 coltri(op(subsop(k=NULL, [x1,x2,x3,x4])), c1,c2,c3), k=1..4) \}:
"}}{OUT_R 42 0 41{TEXT 2 42 "Warning, `k` is implicitly declared \+
local\012"}}{SEP_R 43 0}{COM_R 44 0{TEXT 1 55 "Tetrahedron  in wi
reframe in space with given vertices:"}}{SEP_R 45 0}{INP_R 46 0 "
> "{TEXT 0 105 "wiretet:=\012(x1,x2,x3,x4)->\012\{line(x1,x2), li
ne(x1,x3), line(x1,x4), line(x2,x3), line(x2,x4), line(x3,x4)\}:"
}}{SEP_R 47 0}{COM_R 48 0{TEXT 1 63 "Colored tetrahedron  in wire
frame in space with given vertices:"}}{SEP_R 49 0}{INP_R 50 0 "> \+
"{TEXT 0 191 "wirecoltet:=\012(x1,x2,x3,x4,c1,c2,c3)->\012\{colli
ne(x1,x2,c1,c2,c3), colline(x1,x3,c1,c2,c3), colline(x1,x4,c1,c2,
c3),\012  colline(x2,x3,c1,c2,c3), colline(x2,x4,c1,c2,c3), colli
ne(x3,x4,c1,c2,c3)\}:"}}{SEP_R 51 0}{COM_R 52 0{TEXT 1 17 " Trans
formations:"}}{SEP_R 53 0}{INP_R 54 0 "> "{TEXT 0 243 "H(0):=arra
y(1..3,1..3,identity):\012H(1):=array([[1,0,0], [0,-1,0], [0,0,-1
]]):\012H(2):=array([[-1,0,0], [0,1,0], [0,0,-1]]):\012H(3):=arra
y([[-1,0,0], [0,-1,0], [0,0,1]]):\012Q:=array([[1,0,0], [0,0,-1],
 [0,1,0]]):\012C:=array([[0,0,1], [1,0,0], [0,1,0]]):"}}{SEP_R 55
 0}{COM_R 56 0{TEXT 1 39 "The golden section and refrence points:
"}}{SEP_R 57 0}{INP_R 58 0 "> "{TEXT 0 103 "g:=(1+sqrt(5))/2:\012
a:=k->evalm(H(k)&*[1,1,1]):\012b:=k->evalm(-H(k)&*[1,1,1]):\012p:
=l->evalm(C^(l)&*[g,1,0]):"}}{SEP_R 59 0}{COM_R 60 0{TEXT 1 65 "P
lot a reciprocal pair of  tetrahedra with prescribed RGB colors:"
}}{SEP_R 61 0}{COM_R 62 0{TEXT 1 35 "Vertfigtri is a set of 3 tri
angles."}}{SEP_R 63 0}{INP_R 64 0 "> "{TEXT 0 221 "vertfigtri:=\0
12(x1,x2,x3,c1,c2,c3)->\012 \{coltri(x1, evalm((x1+x2)/2), evalm(
(x1+x3)/2), c1, c2, c3),\012  coltri(x2, evalm((x2+x3)/2), evalm(
(x2+x1)/2), c1, c2, c3),\012  coltri(x3, evalm((x3+x1)/2), evalm(
(x3+x2)/2), c1, c2, c3)\}:"}}{SEP_R 65 0}{INP_R 66 0 "> "{TEXT 0 
92 "display3d(vertfigtri(seq(a(k),k=1..3),1,0.4,0.7),\012scaling=
constrained, orientation=[46,62]);"}}{SEP_R 67 0}{COM_R 68 0{TEXT
 1 94 "We concatenate the 3 triangles in vertfigtri  for each fac
e of the tetrahedron by using `op'. "}}{SEP_R 69 0}{INP_R 70 0 ">
 "{TEXT 0 116 "vertfigtet:=\012(x1,x2,x3,x4,c1,c2,c3)->\012\{seq(
 op(\012vertfigtri(op(subsop(k=NULL, [x1,x2,x3,x4])), c1,c2,c3)\0
12), k=1..4)\}:"}}{OUT_R 71 0 70{TEXT 2 42 "Warning, `k` is impli
citly declared local\012"}}{SEP_R 72 0}{INP_R 73 0 "> "{TEXT 0 92
 "display3d(vertfigtet(seq(a(k),k=0..3),1,0.4,0.7),\012scaling=co
nstrained, orientation=[46,62]);"}}{SEP_R 74 0}{INP_R 75 0 "> "
{TEXT 0 205 "display3d(\012vertfigtet(seq(a(k),k=0..3),1,0.4,0.7)
 union\012vertfigtet(seq(b(k),k=0..3),0.5,1,0.8),\012scaling=cons
trained, orientation=[78,83],\012titlefont=[TIMES,ROMAN,22], titl
e=`Reciprocal Pair of Tetrahedra`);"}}{SEP_R 76 0}{COM_R 77 0
{TEXT 1 95 "Trunctri  is a single triangle obtained from a triang
le by truncating along the vertex figures."}}{SEP_R 78 0}{INP_R 
79 0 "> "{TEXT 0 144 "trunctri := (x1,x2,x3,c1,c2,c3)->\012coltri
( \012op( map( (x->convert(x,list)), \012[evalm((x1+x2)/2), evalm
((x2+x3)/2), evalm((x1+x3)/2)]) ), c1,c2,c3):"}}{SEP_R 80 0}
{INP_R 81 0 "> "{TEXT 0 105 "trunctet:=(x1,x2,x3,x4,c1,c2,c3)->\0
12\{seq( trunctri(op(subsop(k=NULL, [x1,x2,x3,x4])), c1,c2,c3), k
=1..4)\}:"}}{OUT_R 82 0 81{TEXT 2 42 "Warning, `k` is implicitly \+
declared local\012"}}{SEP_R 83 0}{INP_R 84 0 "> "{TEXT 0 273 "twi
nocta:=display3d(\{\012op(trunctet(a(0),a(1),a(2),a(3),1,0.4,0.7)
), \012op(trunctet(b(0),b(1),b(2),b(3),0.5,1,0.8)), \012op(wireco
ltet(a(0),a(1),a(2),a(3),1,0.4,0.7)), \012op(wirecoltet(b(0),b(1)
,b(2),b(3),0.5,1,0.8)) \}):\012display3d(twinocta,scaling=constra
ined, orientation=[77,71]);"}}{SEP_R 85 0}{COM_R 86 0{TEXT 1 46 "
A paralleogram in space with 3 given vertices:"}}{SEP_R 87 0}
{INP_R 88 0 "> "{TEXT 0 110 "par := (x0,x1,x2)->polygonplot3d(\01
2map(x->convert(x,list), [x1,x2,evalm(x1+x2-x0)]),\012style=patch
, thickness=2):"}}{SEP_R 89 0}{COM_R 90 0{TEXT 1 54 "A colored pa
ralleogram in space with 3 given vertices:"}}{SEP_R 91 0}{INP_R 
92 0 "> "{TEXT 0 153 "colpar := (x0,x1,x2,c1,c2,c3)->polygonplot3
d(\012map(x->convert(x,list), [x1,x0,x2,evalm(x1+x2-x0)]),\012sty
le=patch, thickness=2, color=COLOR(RGB,c1,c2,c3) ):"}}{SEP_R 93 0
}{COM_R 94 0{TEXT 1 48 "A parallelepiped in space with 4 given ve
rtices:"}}{SEP_R 95 0}{INP_R 96 0 "> "{TEXT 0 206 "parpip := (x0,
x1,x2,x3)->\012\{ par(x0,x1,x2), par(x0,x2,x3), par(x0,x1,x3),\01
2   par(x1,evalm(x1+x2-x0),evalm(x1+x3-x0)),\012   par(x2,evalm(x
1+x2-x0),evalm(x2+x3-x0)),\012   par(x3,evalm(x1+x3-x0),evalm(x2+
x3-x0)) \}:"}}{SEP_R 97 0}{COM_R 98 0{TEXT 1 56 "A colored parall
elepiped in space with 4 given vertices:"}}{SEP_R 99 0}{INP_R 100
 0 "> "{TEXT 0 272 "colparpip := (x0,x1,x2,x3,c1,c2,c3)->\012\{ p
ar(x0,x1,x2,c1,c2,c3), par(x0,x2,x3,c1,c2,c3), par(x0,x1,x3,c1,c2
,c3),\012   par(x1,evalm(x1+x2-x0),evalm(x1+x3-x0),c1,c2,c3),\012
   par(x2,evalm(x1+x2-x0),evalm(x2+x3-x0),c1,c2,c3),\012   par(x3
,evalm(x1+x3-x0),evalm(x2+x3-x0),c1,c2,c3) \}:"}}{SEP_R 101 0}
{COM_R 102 0{TEXT 1 70 " Plot a cube and the reciprocal octahedro
n with prescribed RGB colors:"}}{SEP_R 103 0}{INP_R 104 0 "> "
{TEXT 0 78 "c:=(k,l)->evalm(H(k)&*C^(l)&*[2,0,0]):\012d:=(k,l)->e
valm(H(k)&*C^(l)&*[-2,0,0]):"}}{SEP_R 105 0}{INP_R 106 0 "> "
{TEXT 0 145 "vertfigocta := display3d(\012seq(vertfigtri(c(k,1),c
(k,2),c(k,3),1,0.4,0.7), k=0..3) union\012seq(vertfigtri(d(k,1),d
(k,2),d(k,3),1,0.4,0.7), k=0..3)):"}}{SEP_R 107 0}{INP_R 108 0 ">
 "{TEXT 0 234 "display3d(\012\{ seq( coltri(\012  op( map( (x->ev
alm(Q^n&*x)), [ [1,1,1],[1,1,0],[1,0,1] ] )), \012  n-3,0,0), n=1
..4)\}, axes=boxed, tickmarks=[0,0,0], scaling=constrained,\012ti
tlefont=[TIMES,ROMAN,22],\012title=`The Action of the Quarter Tur
n Q`);"}}{SEP_R 109 0}{INP_R 110 0 "> "{TEXT 0 172 "vertfigcube :
= display3d(\012\{ seq( seq( seq( coltri(\012  op( map( (x->evalm
((-1)^(s)*C^l&*Q^n&*x)), [ [1,1,1],[1,1,0],[1,0,1] ] )), \012  0.
5,1,0.8), n=1..4), l=1..3), s=0..1) \}):"}}{SEP_R 111 0}{INP_R 
112 0 "> "{TEXT 0 161 "display3d(\{vertfigocta, vertfigcube\},\01
2scaling=constrained,orientation=[70,69],\012titlefont=[TIMES,ROM
AN,22],\012title=`Reciprocal Pair of an Octahedron and a Cube `);
"}}{SEP_R 113 0}{COM_R 114 0{TEXT 1 36 "Define the faces of a cub
octahedron:"}}{SEP_R 115 0}{INP_R 116 0 "> "{TEXT 0 144 "truncoct
a := display3d(\012\{ seq(trunctri(seq(c(k,l),l=1..3), 1, 0.4, 0.
7), k=0..3),\012   seq(trunctri(seq(d(k,l),l=1..3), 1, 0.4, 0.7),
 k=0..3) \} ):"}}{SEP_R 117 0}{INP_R 118 0 "> "{TEXT 0 155 "trunc
cube := display3d(\012\{ seq( seq( colpar(\012  op( map( (x->eval
m((-1)^(s)*C^(l)&*x)), [ [1,1,0],[1,0,1],[1,0,-1] ] )),\012  0.5,
 1, 0.8), l=1..3), s=0..1) \}):"}}{SEP_R 119 0}{INP_R 120 0 "> "
{TEXT 0 127 "display3d(\{truncocta, trunccube\},\012scaling=const
rained, orientation=[70,75],\012titlefont=[TIMES,ROMAN,22], title
=`Cuboctahedron`);"}}{SEP_R 121 0}{COM_R 122 0{TEXT 1 21 " 3 gold
en rectangles:"}}{SEP_R 123 0}{INP_R 124 0 "> "{TEXT 0 256 "goldr
ecs := display3d(\012\{ seq( seq( colpar(\012   op( map( (x->eval
m(H(k)&*C^l&*x)), [ [0,0,0],[0,1,0],[g,0,0] ] )),\012   l/3, 1, 1
-l/3), k=0..3), l=1..3) \}):\012display3d(goldrecs,\012scaling=co
nstrained,\012titlefont=[TIMES,ROMAN,22], title=`Three Golden Rec
tangles `);"}}{SEP_R 125 0}{INP_R 126 0 "> "{TEXT 0 195 "fitface \+
:= coltri( seq(evalm(C^(l)&*[g,1,0]), l=1..3 ), 1, 0, 0):\012disp
lay3d(\012\{ goldrecs, fitface \},\012orientation=[44,61], scalin
g=constrained,\012titlefont=[TIMES,ROMAN,22], title=`Fitting a Fa
ce `);"}}{SEP_R 127 0}{INP_R 128 0 "> "{TEXT 0 186 "axis := colli
ne([0,0,0], [1.4*g, 1.4, 0], 0, 0, 1): display3d(\012\{ goldrecs,
 fitface, axis \},\012scaling=constrained,orientation=[16,76], \0
12titlefont=[TIMES,ROMAN,22], title=`Rotation Axis `);"}}{SEP_R 
129 0}{COM_R 130 0{TEXT 1 46 "Rotation around the x-axis with ang
le 2*Pi/5: "}}{SEP_R 131 0}{INP_R 132 0 "> "{TEXT 0 91 "A := arra
y(\012[ [1, 0, 0], [0, cos(2*Pi/5), -sin(2*Pi/5)], [0, sin(2*Pi/5
), cos(2*Pi/5)] ] ):"}}{SEP_R 133 0}{COM_R 134 0{TEXT 1 212 "Rota
tion around the z-axis sending  [1, 0, 0] to   [g/sqrt(g^2+1), 1/
sqrt(g^2+1), 0]:                                                 \+
                                                                 \+
             "}}{SEP_R 135 0}{INP_R 136 0 "> "{TEXT 0 73 "r1 := f
actor(g/sqrt(g^2+1),sqrt(5)):\012r2 := factor(1/sqrt(g^2+1),sqrt(
5)):"}}{SEP_R 137 0}{INP_R 138 0 "> "{TEXT 0 55 "B := array( [ [r
1, -r2, 0], [r2, r1, 0], [0, 0, 1] ] ):"}}{SEP_R 139 0}{COM_R 140
 0{TEXT 1 60 "Rotation around the axis through [g,1,0]  with angl
e 2*Pi/5:"}}{SEP_R 141 0}{INP_R 142 0 "> "{TEXT 0 30 "R :=evalm(B
&*A&*transpose(B)):"}}{SEP_R 143 0}{COM_R 144 0{TEXT 1 64 "We can
 simplify the entries by writing them in terms of sqrt(5):"}}
{SEP_R 145 0}{INP_R 146 0 "> "{TEXT 0 31 "map( X->factor(X, sqrt(
5)), R);"}}{OUT_R 147 0 146{DAG (3n4\`MATRIX`,2[2,4[2,4+5*3j2x000
5/3j2x0001j2x0002/3pEj2x0004p12pE+5pAp12/3i2x0001p14pEpD[2,4p18pD
+5pAp1Bp1BpE[2,4/3p1Cp10p9p18}}{SEP_R 148 0}{INP_R 149 0 "> "
{TEXT 0 248 "rotfaces := seq( tri( seq( evalm( R^(n)&*C^(l)&*[g, \+
1, 0]), l=1..3) ), n=1..5):\012display3d(\{ goldrecs, fitface, ax
is, rotfaces \},\012style=line,  scaling=constrained,orientation=
[16,76], shading=z,\012titlefont=[TIMES,ROMAN,22], title=`Rotatin
g a Face `);"}}{SEP_R 150 0}{INP_R 151 0 "> "{TEXT 0 71 "p:=l->ev
alm(C^(l)&*[g,1,0]): \012icosa:=(n,k,l)->evalm(R^(n)&*H(k)&*p(l))
:"}}{SEP_R 152 0}{INP_R 153 0 "> "{TEXT 0 84 "colgr := (n,c1,c2,c
3)->\012seq( coltri( seq( icosa(n,k,l), l=1..3), c1,c2,c3), k=0..
3):"}}{OUT_R 154 0 153{TEXT 2 84 "Warning, `k` is implicitly decl
ared local\012Warning, `l` is implicitly declared local\012"}}
{SEP_R 155 0}{COM_R 156 0{TEXT 1 24 "The colored icosahedron:"}}
{SEP_R 157 0}{INP_R 158 0 "> "{TEXT 0 96 "colors :=  \012[[ 0.9,0
.55,0.01],[0.9,0.55,0.89],[0.38,0.68,0.89],[0.29,0.84,0.145],[1,0
.78,0.14]]:"}}{SEP_R 159 0}{INP_R 160 0 "> "{TEXT 0 61 "colicosa \+
:= display3d(\{ seq(colgr(n,op(colors[n])),n=1..5)\}):"}}{SEP_R 
161 0}{INP_R 162 0 "> "{TEXT 0 96 "display(colicosa,\012scaling=c
onstrained,\012titlefont=[TIMES,ROMAN,22], title=`Colored Icosahe
dron`);"}}{SEP_R 163 0}{INP_R 164 0 "> "{TEXT 0 283 "wireicosa :=
 display3d(\012\{ seq( seq( tri( seq( icosa(n,k,l), l=1..3)), k=0
..3), n=1..5) \} ): \012display3d(\{ goldrecs, fitface, axis, wir
eicosa \},\012style=line,  scaling=constrained,orientation=[16,76
], shading=z,\012titlefont=[TIMES,ROMAN,22], title=`Icosahedron a
nd the Golden Rectangles`);"}}{SEP_R 165 0}{COM_R 166 0{TEXT 1 
290 "Extend each face in one color group to obtain a tetrahedron.
 The vertices of one  tetrahedron 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 origi
n splits the altitude in ratio 3:1."}}{SEP_R 167 0}{INP_R 168 0 "
> "{TEXT 0 52 "exttetra:=(n,k)->evalm(-(g+1)*R^(n)&*H(k)&*[1,1,1]
):"}}{SEP_R 169 0}{INP_R 170 0 "> "{TEXT 0 88 "wiretetra := \012(
n,c1,c2,c3)-> \012wirecoltet( op([seq(exttetra(n,k), k=0..3)]), c
1, c2, c3):"}}{OUT_R 171 0 170{TEXT 2 42 "Warning, `k` is implici
tly declared local\012"}}{SEP_R 172 0}{INP_R 173 0 "> "{TEXT 0 
246 "display3d(\012\{ seq( coltri( seq( icosa(1,k,l), l=1..3), 0,
1,1), k=0..3),\012   seq( seq( tri( seq( icosa(n,k,l), l=1..3)), \+
k=0..3), n=1..5) \},\012style=line, orientation=[70,90], scaling=
constrained,\012 titlefont=[TIMES,ROMAN,22], title=`One Color Gro
up`);"}}{SEP_R 174 0}{INP_R 175 0 "> "{TEXT 0 219 "display3d(\012
\{ seq( coltri( seq( icosa(1,k,l), l=1..3), 0,1,1), k=0..3),\012 \+
  seq( seq( tri( seq( icosa(n,k,l), l=1..3)), k=0..3), n=1..5),\0
12   op(wiretetra(1, 0,1,1))\},\012style=line, orientation=[70,90
], scaling=constrained);"}}{SEP_R 176 0}{INP_R 177 0 "> "{TEXT 0 
192 "display3d(\012\{ seq( op(wiretetra(n, op(colors[n]))), n=1..
5) \},\012scaling=constrained,orientation=[69,79],\012titlefont=[
TIMES,ROMAN,22],\012title=`Five Tetrahedra Circumscribed Around a
n Icosahedron`);"}}{SEP_R 178 0}{COM_R 179 0{TEXT 1 31 "The verti
ces of a dodecahedron:"}}{SEP_R 180 0}{INP_R 181 0 "> "{TEXT 0 75
 "cap := s->polygonplot3d( [seq( evalm((-1)^(s)*R^(n)&*[1,1,1]), \+
n=1..5) ] ):"}}{OUT_R 182 0 181{TEXT 2 42 "Warning, `n` is implic
itly declared local\012"}}{SEP_R 183 0}{INP_R 184 0 "> "{TEXT 0 
185 "display3d(\{ goldrecs, fitface, rotfaces, cap(0) \},\012styl
e=line, thickness=4, orientation=[35,83], scaling=constrained, sh
ading=z,\012titlefont=[TIMES,ROMAN,22], title=`Fitting a Pentagon
`);"}}{SEP_R 185 0}{INP_R 186 0 "> "{TEXT 0 89 "belt:=(m,s)->poly
gonplot3d( \012[seq( evalm((-1)^(s)*R^(m)&*C&*R^(n)&*[1,1,1]), n=
1..5) ] ):"}}{OUT_R 187 0 186{TEXT 2 42 "Warning, `n` is implicit
ly declared local\012"}}{SEP_R 188 0}{INP_R 189 0 "> "{TEXT 0 205
 "dodec := display3d(\012\{ seq(cap(s), s=0..1), seq( seq( belt(m
,s), m=1..5), s=0..1) \},\012style=patch,scaling=constrained,orie
ntation=[38,72]):\012display3d(dodec,\012titlefont=[TIMES,ROMAN,2
2], title=`Dodecahedron`);"}}{SEP_R 190 0}{INP_R 191 0 "> "{TEXT 
0 161 "wiredodec := display3d(\012\{ seq(cap(s), s=0..1), seq( se
q( belt(m,s), m=1..5), s=0..1) \},\012style=wireframe, thickness=
3, scaling=constrained, orientation=[38,72] ):"}}{SEP_R 192 0}
{INP_R 193 0 "> "{TEXT 0 180 "display3d(\{ goldrecs, wireicosa, w
iredodec \},\012style=line, thickness=4, orientation=[35,83], sca
ling=constrained, shading=z,\012titlefont=[TIMES,ROMAN,22], title
=`The Two Wireframes`);"}}{SEP_R 194 0}{COM_R 195 0{TEXT 1 77 "De
fine the faces of the reciprocal pair of an icosahedron and a dod
ecahedron:"}}{SEP_R 196 0}{INP_R 197 0 "> "{TEXT 0 112 "vertfigic
osa := \012\{ seq( seq( \012   op(vertfigtri(seq(icosa(n,k,l), l=
1..3), 1, 0.4, 0.7)), \012   k=0..3), n=1..5) \}:"}}{SEP_R 198 0}
{INP_R 199 0 "> "{TEXT 0 44 "display3d(vertfigicosa,scaling=const
rained);"}}{SEP_R 200 0}{COM_R 201 0{TEXT 1 72 "Define the midpoi
nt of an edge of a pentagonal face (and its antipodal):"}}{SEP_R 
202 0}{INP_R 203 0 "> "{TEXT 0 72 "mid := s-> evalm(((-1)^(s)/2)*
([1,1,1]+transpose(R)&*[1,1,1])): \012mid(0);"}}{OUT_R 204 0 203
{DAG (3n4\`VECTOR`,2[2,4+5/3j2x0001j2x0004p9*3j2x0005/3p9j2x0002p
8+5/3j2x0003pBp9pEp8p11}}{SEP_R 205 0}{INP_R 206 0 "> "{TEXT 0 
132 "vertfigcap := (n,s)-> coltri( \012op( map( (x->evalm(R^(n)&*
x)), \012[mid(s), evalm((-1)^(s)*[1,1,1]), evalm(R&*mid(s))] ) ),
 \0120.5,1,0.8):"}}{SEP_R 207 0}{INP_R 208 0 "> "{TEXT 0 53 "disp
lay3d(\{seq(seq(vertfigcap(n,s),n=1..5),s=0..1)\});"}}{SEP_R 209 
0}{INP_R 210 0 "> "{TEXT 0 146 "vertfigbelt := (m,n,s)-> coltri(\
012op( map( (x->evalm(R^(m)&*C&*R^(n)&*x)),\012 [mid(s), evalm((-
1)^(s)*[1,1,1]), evalm(R&*mid(s))] ) ), \0120.5, 1, 0.8):"}}
{SEP_R 211 0}{INP_R 212 0 "> "{TEXT 0 75 "display3d(\{ seq( seq( \+
seq(vertfigbelt(m,n,s), m=1..5), n=1..5), s=0..1) \});"}}{SEP_R 
213 0}{INP_R 214 0 "> "{TEXT 0 248 "display3d(\012\{ op(vertfigic
osa), \012   seq(seq(vertfigcap(n,s),n=1..5),s=0..1),\012   seq(s
eq(seq(vertfigbelt(m,n,s),m=1..5),n=1..5),s=0..1) \},\012scaling=
constrained,\012titlefont=[TIMES,ROMAN,22],\012title=`Reciprocal \+
Pair of an Icosahedron and a Dodecahedron`);"}}{SEP_R 215 0}
{COM_R 216 0{TEXT 1 40 "Define the faces of an icosidodecaderon:"
}}{SEP_R 217 0}{INP_R 218 0 "> "{TEXT 0 95 "truncicosa := \012\{ \+
seq( seq( trunctri(\012seq(icosa(n,k,l), l=1..3), 1,0.4,0.7), k=0
..3), n=1..5) \}:"}}{SEP_R 219 0}{INP_R 220 0 "> "{TEXT 0 137 "tr
unccap := s->polygonplot3d(\012[ seq( evalm((-1)^(s)*R^(n)&*[(1+s
qrt(5))/4, (3+sqrt(5))/4, 1/2]), n=1..5) ],\012color=COLOR(RGB,0.
5,1,0.8) ):"}}{OUT_R 221 0 220{TEXT 2 42 "Warning, `n` is implici
tly declared local\012"}}{SEP_R 222 0}{INP_R 223 0 "> "{TEXT 0 
155 "truncbelt := (m, s)->polygonplot3d(\012[ seq( \012evalm((-1)
^(s)*R^(m)&*C&*R^(n)&*[(1+sqrt(5))/4, (3+sqrt(5))/4, 1/2]), \012n
=1..5) ],\012color=COLOR(RGB,0.5,1,0.8) ):"}}{OUT_R 224 0 223
{TEXT 2 42 "Warning, `n` is implicitly declared local\012"}}
{SEP_R 225 0}{INP_R 226 0 "> "{TEXT 0 212 "display3d(\012\{ op(tr
uncicosa), \012seq(trunccap(s), s=0..1), \012seq( seq(truncbelt(m
,s), m=1..5), s=0..1) \},\012style=patch, scaling=constrained, or
ientation=[79,76],\012titlefont=[TIMES,ROMAN,22], title=`Icosidod
ecahedron`);"}}{SEP_R 227 0}{INP_R 228 0 "> "{TEXT 0 152 "colwire
cube := (n,c1,c2,c3)->display3d(\012\{ seq( seq( colline( \012eva
lm(R^(n)&*H(k)&*[1,1,1]), evalm(R^(n)&*H(k)&*b(l)), c1, c2, c3), \+
\012l=1..3), k=0..3) \} ):"}}{OUT_R 229 0 228{TEXT 2 84 "Warning,
 `k` is implicitly declared local\012Warning, `l` is implicitly d
eclared local\012"}}{SEP_R 230 0}{COM_R 231 0{TEXT 1 53 "3 pentag
ons meeting at a vertex and a reference cube."}}{SEP_R 232 0}
{INP_R 233 0 "> "{TEXT 0 125 "display3d(\012\{ cap(0), seq(belt(n
,0),n=1..2), colwirecube(1,1,1,0) \},\012style=patch, scaling=con
strained, orientation=[-37,97] );"}}{SEP_R 234 0}{INP_R 235 0 "> \+
"{TEXT 0 192 "display3d(\012\{ wiredodec, \012   seq(colwirecube(
n, op(colors[n])), n=1..5) \},\012scaling=constrained, orientatio
n=[67,64],\012titlefont=[TIMES,ROMAN,22],\012title=`Five Cubes In
scribed in a Dodecahedron`);"}}}{END}
