{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 262{COM_R 2 0{TEXT 1 2147 "
\015MAPLE WORKSHEET #5: Platonic and Archimedean Solids and Trunc
ations.\015\015The following  Maple session creates some graphics
 of the Platonic and Archimedean Solids. Reference points: [1,1,1
] and [g,1,0], where g=(1+sqrt(5))/2 is the golden section. Trans
formations: H(0)=identity; H(l)= half-turn around the l-th coordi
nate axis, l=1..3; Q=quarter turn around the x-axis; C=rotation a
round the axis through [1,1,1] with angle 2*Pi/3; R= rotation aro
und 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 a
re 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 vertices C^l [2,0,0], l=1..3; the 6 vertices of the octahedr
on 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 \+
the 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 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-images, n=1..5, of these give the 5 color groups. The fa
ces in one color 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 c
ube created above is inscribed in the dodecahedron.  5 cubes insc
ribed in the dodecahedron are the R^n-images, n=1..5, of the init
ial cube. Trunc of a geometric object truncates the object along \+
the vertex figures. Vertfig is complementary to trunc. \012All Ma
ple graphics  created in this worksheet come up when the commands
 are executed; to run `gvplot' and `writeoogl', a connection\015b
etween Maple and Geomview has to be established. At Rutgers-Camde
n,\015this is done by executing the command :\015read(`/carp/u1/c
visual/gvplot.mapleV3`);\012the Geomview files can be viewed only
 in designated accounts.  "}}{SEP_R 3 0}{INP_R 4 0 "> "{TEXT 0 12
 "with(plots):"}}{SEP_R 5 0}{INP_R 6 0 "> "{TEXT 0 40 "read(`/car
p/u1/cvisual/gvplot.mapleV3`);"}}{OUT_R 7 0 6{DAG [2,3n5\`writeoo
gl`n4\`gvplot`}}{SEP_R 8 0}{INP_R 9 0 "> "{TEXT 0 70 "z1:=polyhed
raplot([3,0,0],polytype=tetrahedron,thickness=3,color=red):"}}
{SEP_R 10 0}{INP_R 11 0 "> "{TEXT 0 78 "z2:=polyhedraplot([-0.5,0
.5,0.5],polytype=hexahedron,thickness=3,color=green):"}}{SEP_R 12
 0}{INP_R 13 0 "> "{TEXT 0 87 "z3:=polyhedraplot([-3.6,0,0],polyt
ype=octahedron,polyscale=1.6,thickness=3,color=blue):"}}{SEP_R 14
 0}{INP_R 15 0 "> "{TEXT 0 76 "z4:=polyhedraplot([-1.5,0,-3],poly
type=dodecahedron,thickness=3,color=gold):"}}{SEP_R 16 0}{INP_R 
17 0 "> "{TEXT 0 80 "z5:=polyhedraplot([1.5,0,-3],polytype=icosah
edron,thickness=3,color=aquamarine):"}}{SEP_R 18 0}{INP_R 19 0 ">
 "{TEXT 0 141 "display3d(\{z . (1..5)\},style=wireframe,scaling=c
onstrained,orientation=[100,66],titlefont=[TIMES,ROMAN,22],title=
`The Five Platonic Solids`);"}}{SEP_R 20 0}{COM_R 21 0{TEXT 1 43 
"Line segment  in space with given vertices:"}}{SEP_R 22 0}{INP_R
 23 0 "> "{TEXT 0 93 "line:=\012(x1,x2)->polygonplot3d([convert(x
1,list), convert(x2,list)],\012style=line, thickness=3):"}}{SEP_R
 24 0}{COM_R 25 0{TEXT 1 50 "Colored line segment in space with g
iven vertices:"}}{SEP_R 26 0}{INP_R 27 0 "> "{TEXT 0 132 "colline
:=\012(x1,x2,c1,c2,c3)->polygonplot3d(\012map( (x->convert(x,list
)), [x1,x2]),\012style=line, thickness=3, color=COLOR(RGB,c1,c2,c
3)):"}}{SEP_R 28 0}{COM_R 29 0{TEXT 1 38 "Triangle in space with \+
given vertices:"}}{SEP_R 30 0}{INP_R 31 0 "> "{TEXT 0 85 "tri:=\0
12(x1,x2,x3)->polygonplot3d(map( (x->convert(x,list)), [x1,x2,x3]
),\012thickness=2):"}}{SEP_R 32 0}{COM_R 33 0{TEXT 1 52 "Colored \+
triangle in space with given vertex-vectors:"}}{SEP_R 34 0}{INP_R
 35 0 "> "{TEXT 0 138 "coltri:=\012(x1,x2,x3,c1,c2,c3)->polygonpl
ot3d(\012map( (x->convert(x,list)), [x1,x2,x3]),\012style=patch, \+
thickness=2, color=COLOR(RGB,c1,c2,c3)):"}}{SEP_R 36 0}{COM_R 37 
0{TEXT 1 41 "Tetrahedron in space with given vertices:"}}{SEP_R 
38 0}{INP_R 39 0 "> "{TEXT 0 79 "tet:=\012(x1,x2,x3,x4)->\{seq( t
ri( op(subsop(k=NULL, [x1,x2,x3,x4])) ), k=1..4) \}:"}}{OUT_R 40 
0 39{TEXT 2 42 "Warning, `k` is implicitly declared local\012"}}
{SEP_R 41 0}{COM_R 42 0{TEXT 1 49 "Colored tetrahedron in space w
ith given vertices:"}}{SEP_R 43 0}{INP_R 44 0 "> "{TEXT 0 104 "co
ltet:=\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 45 0 44
{TEXT 2 42 "Warning, `k` is implicitly declared local\012"}}
{SEP_R 46 0}{COM_R 47 0{TEXT 1 55 "Tetrahedron  in wireframe in s
pace with given vertices:"}}{SEP_R 48 0}{INP_R 49 0 "> "{TEXT 0 
105 "wiretet:=\012(x1,x2,x3,x4)->\012\{line(x1,x2), line(x1,x3), \+
line(x1,x4), line(x2,x3), line(x2,x4), line(x3,x4)\}:"}}{SEP_R 50
 0}{COM_R 51 0{TEXT 1 63 "Colored tetrahedron  in wireframe in sp
ace with given vertices:"}}{SEP_R 52 0}{INP_R 53 0 "> "{TEXT 0 
191 "wirecoltet:=\012(x1,x2,x3,x4,c1,c2,c3)->\012\{colline(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), colline(x3,x4,
c1,c2,c3)\}:"}}{SEP_R 54 0}{COM_R 55 0{TEXT 1 17 " Transformation
s:"}}{SEP_R 56 0}{INP_R 57 0 "> "{TEXT 0 243 "H(0):=array(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):=array([[-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 58 0}{COM_R
 59 0{TEXT 1 39 "The golden section and refrence points:"}}{SEP_R
 60 0}{INP_R 61 0 "> "{TEXT 0 103 "g:=(1+sqrt(5))/2:\012a:=k->eva
lm(H(k)&*[1,1,1]):\012b:=k->evalm(-H(k)&*[1,1,1]):\012p:=l->evalm
(C^(l)&*[g,1,0]):"}}{SEP_R 62 0}{COM_R 63 0{TEXT 1 65 "Plot a rec
iprocal pair of  tetrahedra with prescribed RGB colors:"}}{SEP_R 
64 0}{COM_R 65 0{TEXT 1 35 "Vertfigtri is a set of 3 triangles."}
}{SEP_R 66 0}{INP_R 67 0 "> "{TEXT 0 221 "vertfigtri:=\012(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 68 0}{INP_R 69 0 "> "{TEXT 0 92 "displ
ay3d(vertfigtri(seq(a(k),k=1..3),1,0.4,0.7),\012scaling=constrain
ed, orientation=[46,62]);"}}{SEP_R 70 0}{INP_R 71 0 "> "{TEXT 0 
102 "gvplot(\012display3d(vertfigtri(seq(a(k),k=1..3),1,0.4,0.7),
\012scaling=constrained, orientation=[46,62]) );"}}{SEP_R 72 0}
{COM_R 73 0{TEXT 1 94 "We concatenate the 3 triangles in vertfigt
ri  for each face of the tetrahedron by using `op'. "}}{SEP_R 74 
0}{INP_R 75 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)\012), k=1..4)\}:"}}{OUT_R 76 0 75{TEXT 2 42 "Warni
ng, `k` is implicitly declared local\012"}}{SEP_R 77 0}{INP_R 78 
0 "> "{TEXT 0 92 "display3d(vertfigtet(seq(a(k),k=0..3),1,0.4,0.7
),\012scaling=constrained, orientation=[46,62]);"}}{SEP_R 79 0}
{INP_R 80 0 "> "{TEXT 0 43 "display3d(tet(seq(a(k),k=0..3),1,0.4,
0.7));"}}{SEP_R 81 0}{INP_R 82 0 "> "{TEXT 0 60 "gvplot(\012displ
ay3d(vertfigtet(seq(a(k),k=0..3),1,0.4,0.7))\012);"}}{SEP_R 83 0}
{INP_R 84 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=constrained, orientation=[78,83],\012titlefont=[TIMES
,ROMAN,22], title=`Reciprocal Pair of Tetrahedra`);"}}{SEP_R 85 0
}{INP_R 86 0 "> "{TEXT 0 107 "gvplot( display3d(\012vertfigtet(se
q(a(k),k=0..3),1,0.4,0.7) union vertfigtet(seq(b(k),k=0..3), 0.5,
1,0.8)\012));"}}{SEP_R 87 0}{COM_R 88 0{TEXT 1 95 "Trunctri  is a
 single triangle obtained from a triangle by truncating along the
 vertex figures."}}{SEP_R 89 0}{INP_R 90 0 "> "{TEXT 0 144 "trunc
tri := (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 91 0}{INP_R 92 0 "> "{TEXT 0 105 "tru
nctet:=(x1,x2,x3,x4,c1,c2,c3)->\012\{seq( trunctri(op(subsop(k=NU
LL, [x1,x2,x3,x4])), c1,c2,c3), k=1..4)\}:"}}{OUT_R 93 0 92{TEXT 
2 42 "Warning, `k` is implicitly declared local\012"}}{SEP_R 94 0
}{INP_R 95 0 "> "{TEXT 0 273 "twinocta:=display3d(\{\012op(trunct
et(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(wirecoltet(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)) \}):\012d
isplay3d(twinocta,scaling=constrained, orientation=[77,71]);"}}
{SEP_R 96 0}{INP_R 97 0 "> "{TEXT 0 19 "gvplot( twinocta );"}}
{SEP_R 98 0}{COM_R 99 0{TEXT 1 46 "A paralleogram in space with 3
 given vertices:"}}{SEP_R 100 0}{INP_R 101 0 "> "{TEXT 0 110 "par
 := (x0,x1,x2)->polygonplot3d(\012map(x->convert(x,list), [x1,x2,
evalm(x1+x2-x0)]),\012style=patch, thickness=2):"}}{SEP_R 102 0}
{COM_R 103 0{TEXT 1 54 "A colored paralleogram in space with 3 gi
ven vertices:"}}{SEP_R 104 0}{INP_R 105 0 "> "{TEXT 0 153 "colpar
 := (x0,x1,x2,c1,c2,c3)->polygonplot3d(\012map(x->convert(x,list)
, [x1,x0,x2,evalm(x1+x2-x0)]),\012style=patch, thickness=2, color
=COLOR(RGB,c1,c2,c3) ):"}}{SEP_R 106 0}{COM_R 107 0{TEXT 1 48 "A \+
parallelepiped in space with 4 given vertices:"}}{SEP_R 108 0}
{INP_R 109 0 "> "{TEXT 0 206 "parpip := (x0,x1,x2,x3)->\012\{ par
(x0,x1,x2), par(x0,x2,x3), par(x0,x1,x3),\012   par(x1,evalm(x1+x
2-x0),evalm(x1+x3-x0)),\012   par(x2,evalm(x1+x2-x0),evalm(x2+x3-
x0)),\012   par(x3,evalm(x1+x3-x0),evalm(x2+x3-x0)) \}:"}}{SEP_R 
110 0}{COM_R 111 0{TEXT 1 56 "A colored parallelepiped in space w
ith 4 given vertices:"}}{SEP_R 112 0}{INP_R 113 0 "> "{TEXT 0 272
 "colparpip := (x0,x1,x2,x3,c1,c2,c3)->\012\{ par(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),e
valm(x2+x3-x0),c1,c2,c3) \}:"}}{SEP_R 114 0}{COM_R 115 0{TEXT 1 
70 " Plot a cube and the reciprocal octahedron with prescribed RG
B colors:"}}{SEP_R 116 0}{INP_R 117 0 "> "{TEXT 0 78 "c:=(k,l)->e
valm(H(k)&*C^(l)&*[2,0,0]):\012d:=(k,l)->evalm(H(k)&*C^(l)&*[-2,0
,0]):"}}{SEP_R 118 0}{INP_R 119 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 120 0}{INP_R 121 0 "> "{TEXT 0 234 "display3d(\0
12\{ seq( coltri(\012  op( map( (x->evalm(Q^n&*x)), [ [1,1,1],[1,
1,0],[1,0,1] ] )), \012  n-3,0,0), n=1..4)\}, axes=boxed, tickmar
ks=[0,0,0], scaling=constrained,\012titlefont=[TIMES,ROMAN,22],\0
12title=`The Action of the Quarter Turn Q`);"}}{SEP_R 122 0}
{INP_R 123 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 124 0}{INP_R 125 0 "> "{TEXT 0 161 "d
isplay3d(\{vertfigocta, vertfigcube\},\012scaling=constrained,ori
entation=[70,69],\012titlefont=[TIMES,ROMAN,22],\012title=`Recipr
ocal Pair of an Octahedron and a Cube `);"}}{SEP_R 126 0}{INP_R 
127 0 "> "{TEXT 0 48 "gvplot( display3d(\{vertfigocta, vertfigcub
e\}) );"}}{SEP_R 128 0}{COM_R 129 0{TEXT 1 36 "Define the faces o
f a cuboctahedron:"}}{SEP_R 130 0}{INP_R 131 0 "> "{TEXT 0 144 "t
runcocta := 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 132 0}{INP_R 133 0 "> "{TEXT 0 155
 "trunccube := display3d(\012\{ seq( seq( colpar(\012  op( map( (
x->evalm((-1)^(s)*C^(l)&*x)), [ [1,1,0],[1,0,1],[1,0,-1] ] )),\01
2  0.5, 1, 0.8), l=1..3), s=0..1) \}):"}}{SEP_R 134 0}{INP_R 135 
0 "> "{TEXT 0 127 "display3d(\{truncocta, trunccube\},\012scaling
=constrained, orientation=[70,75],\012titlefont=[TIMES,ROMAN,22],
 title=`Cuboctahedron`);"}}{SEP_R 136 0}{INP_R 137 0 "> "{TEXT 0 
44 "gvplot( display3d(\{truncocta, trunccube\}) );"}}{SEP_R 138 0
}{COM_R 139 0{TEXT 1 21 " 3 golden rectangles:"}}{SEP_R 140 0}
{INP_R 141 0 "> "{TEXT 0 256 "goldrecs := display3d(\012\{ seq( s
eq( colpar(\012   op( map( (x->evalm(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) \}):\0
12display3d(goldrecs,\012scaling=constrained,\012titlefont=[TIMES
,ROMAN,22], title=`Three Golden Rectangles `);"}}{SEP_R 142 0}
{INP_R 143 0 "> "{TEXT 0 195 "fitface := coltri( seq(evalm(C^(l)&
*[g,1,0]), l=1..3 ), 1, 0, 0):\012display3d(\012\{ goldrecs, fitf
ace \},\012orientation=[44,61], scaling=constrained,\012titlefont
=[TIMES,ROMAN,22], title=`Fitting a Face `);"}}{SEP_R 144 0}
{INP_R 145 0 "> "{TEXT 0 186 "axis := colline([0,0,0], [1.4*g, 1.
4, 0], 0, 0, 1): display3d(\012\{ goldrecs, fitface, axis \},\012
scaling=constrained,orientation=[16,76], \012titlefont=[TIMES,ROM
AN,22], title=`Rotation Axis `);"}}{SEP_R 146 0}{COM_R 147 0{TEXT
 1 46 "Rotation around the x-axis with angle 2*Pi/5: "}}{SEP_R 
148 0}{INP_R 149 0 "> "{TEXT 0 91 "A := array(\012[ [1, 0, 0], [0
, cos(2*Pi/5), -sin(2*Pi/5)], [0, sin(2*Pi/5), cos(2*Pi/5)] ] ):"
}}{SEP_R 150 0}{COM_R 151 0{TEXT 1 212 "Rotation around the z-axi
s sending  [1, 0, 0] to   [g/sqrt(g^2+1), 1/sqrt(g^2+1), 0]:     \+
                                                                 \+
                                                         "}}
{SEP_R 152 0}{INP_R 153 0 "> "{TEXT 0 73 "r1 := factor(g/sqrt(g^2
+1),sqrt(5)):\012r2 := factor(1/sqrt(g^2+1),sqrt(5)):"}}{SEP_R 
154 0}{INP_R 155 0 "> "{TEXT 0 55 "B := array( [ [r1, -r2, 0], [r
2, r1, 0], [0, 0, 1] ] ):"}}{SEP_R 156 0}{COM_R 157 0{TEXT 1 60 "
Rotation around the axis through [g,1,0]  with angle 2*Pi/5:"}}
{SEP_R 158 0}{INP_R 159 0 "> "{TEXT 0 30 "R :=evalm(B&*A&*transpo
se(B)):"}}{SEP_R 160 0}{COM_R 161 0{TEXT 1 64 "We can simplify th
e entries by writing them in terms of sqrt(5):"}}{SEP_R 162 0}
{INP_R 163 0 "> "{TEXT 0 31 "map( X->factor(X, sqrt(5)), R);"}}
{OUT_R 164 0 163{DAG (3n4\`MATRIX`,2[2,4[2,4+5*3j2x0005/3j2x0001j
2x0002/3pEj2x0004p12pE+5pAp12/3i2x0001p14pEpD[2,4p18pD+5pAp1Bp1Bp
E[2,4/3p1Cp10p9p18}}{SEP_R 165 0}{COM_R 166 0{TEXT 1 61 "More gen
erally, we can use \"expand( radsimp(  ,`ratdenom`))\":"}}{SEP_R 
167 0}{INP_R 168 0 "> "{TEXT 0 44 "map( X->expand( radsimp(X, `ra
tdenom`)), R);"}}{OUT_R 169 0 168{DAG (3n4\`MATRIX`,2[2,4[2,4+5*3
j2x0005/3j2x0001j2x0002/3pEj2x0004p12pE+5pAp12/3i2x0001p14pEpD[2,
4p18pD+5pAp1Bp1BpE[2,4/3p1Cp10p9p18}}{SEP_R 170 0}{INP_R 171 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, \+
axis, rotfaces \},\012style=line,  scaling=constrained,orientatio
n=[16,76], shading=z,\012titlefont=[TIMES,ROMAN,22], title=`Rotat
ing a Face `);"}}{SEP_R 172 0}{INP_R 173 0 "> "{TEXT 0 71 "p:=l->
evalm(C^(l)&*[g,1,0]): \012icosa:=(n,k,l)->evalm(R^(n)&*H(k)&*p(l
)):"}}{SEP_R 174 0}{INP_R 175 0 "> "{TEXT 0 84 "colgr := (n,c1,c2
,c3)->\012seq( coltri( seq( icosa(n,k,l), l=1..3), c1,c2,c3), k=0
..3):"}}{OUT_R 176 0 175{TEXT 2 84 "Warning, `k` is implicitly de
clared local\012Warning, `l` is implicitly declared local\012"}}
{SEP_R 177 0}{COM_R 178 0{TEXT 1 24 "The colored icosahedron:"}}
{SEP_R 179 0}{INP_R 180 0 "> "{TEXT 0 127 "colors :=  \012[[0.090
, 0.565, 1.000],[0.302, 0.000, 1.0000],[0.212, 0.910, 0.486],[1.0
00, 0.341, 0.1330],[0.788, 0.000, 0.5801]]:"}}{SEP_R 181 0}{INP_R
 182 0 "> "{TEXT 0 61 "colicosa := display3d(\{ seq(colgr(n,op(co
lors[n])),n=1..5)\}):"}}{SEP_R 183 0}{INP_R 184 0 "> "{TEXT 0 50 
" gvplot(display3d(\{ seq(colgr(n,1,0,0),n=1..5)\}));"}}{SEP_R 
185 0}{INP_R 186 0 "> "{TEXT 0 96 "display(colicosa,\012scaling=c
onstrained,\012titlefont=[TIMES,ROMAN,22], title=`Colored Icosahe
dron`);"}}{SEP_R 187 0}{INP_R 188 0 "> "{TEXT 0 17 "gvplot(colico
sa);"}}{SEP_R 189 0}{INP_R 190 0 "> "{TEXT 0 283 "wireicosa := di
splay3d(\012\{ seq( seq( tri( seq( icosa(n,k,l), l=1..3)), k=0..3
), n=1..5) \} ): \012display3d(\{ goldrecs, fitface, axis, wireic
osa \},\012style=line,  scaling=constrained,orientation=[16,76], \+
shading=z,\012titlefont=[TIMES,ROMAN,22], title=`Icosahedron and \+
the Golden Rectangles`);"}}{SEP_R 191 0}{COM_R 192 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 origin spl
its the altitude in ratio 3:1."}}{SEP_R 193 0}{INP_R 194 0 "> "
{TEXT 0 52 "exttetra:=(n,k)->evalm(-(g+1)*R^(n)&*H(k)&*[1,1,1]):"
}}{SEP_R 195 0}{INP_R 196 0 "> "{TEXT 0 88 "wiretetra := \012(n,c
1,c2,c3)-> \012wirecoltet( op([seq(exttetra(n,k), k=0..3)]), c1, \+
c2, c3):"}}{OUT_R 197 0 196{TEXT 2 42 "Warning, `k` is implicitly
 declared local\012"}}{SEP_R 198 0}{INP_R 199 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=const
rained,\012 titlefont=[TIMES,ROMAN,22], title=`One Color Group`);
"}}{SEP_R 200 0}{INP_R 201 0 "> "{TEXT 0 219 "display3d(\012\{ se
q( 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),\012   \+
op(wiretetra(1, 0,1,1))\},\012style=line, orientation=[70,90], sc
aling=constrained);"}}{SEP_R 202 0}{INP_R 203 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 an Ico
sahedron`);"}}{SEP_R 204 0}{COM_R 205 0{TEXT 1 31 "The vertices o
f a dodecahedron:"}}{SEP_R 206 0}{INP_R 207 0 "> "{TEXT 0 75 "cap
 := s->polygonplot3d( [seq( evalm((-1)^(s)*R^(n)&*[1,1,1]), n=1..
5) ] ):"}}{OUT_R 208 0 207{TEXT 2 42 "Warning, `n` is implicitly \+
declared local\012"}}{SEP_R 209 0}{INP_R 210 0 "> "{TEXT 0 185 "d
isplay3d(\{ goldrecs, fitface, rotfaces, cap(0) \},\012style=line
, thickness=4, orientation=[35,83], scaling=constrained, shading=
z,\012titlefont=[TIMES,ROMAN,22], title=`Fitting a Pentagon`);"}}
{SEP_R 211 0}{INP_R 212 0 "> "{TEXT 0 89 "belt:=(m,s)->polygonplo
t3d( \012[seq( evalm((-1)^(s)*R^(m)&*C&*R^(n)&*[1,1,1]), n=1..5) \+
] ):"}}{OUT_R 213 0 212{TEXT 2 42 "Warning, `n` is implicitly dec
lared local\012"}}{SEP_R 214 0}{INP_R 215 0 "> "{TEXT 0 205 "dode
c := display3d(\012\{ seq(cap(s), s=0..1), seq( seq( belt(m,s), m
=1..5), s=0..1) \},\012style=patch,scaling=constrained,orientatio
n=[38,72]):\012display3d(dodec,\012titlefont=[TIMES,ROMAN,22], ti
tle=`Dodecahedron`);"}}{SEP_R 216 0}{INP_R 217 0 "> "{TEXT 0 161 
"wiredodec := display3d(\012\{ seq(cap(s), s=0..1), seq( seq( bel
t(m,s), m=1..5), s=0..1) \},\012style=wireframe, thickness=3, sca
ling=constrained, orientation=[38,72] ):"}}{SEP_R 218 0}{INP_R 
219 0 "> "{TEXT 0 180 "display3d(\{ goldrecs, wireicosa, wiredode
c \},\012style=line, thickness=4, orientation=[35,83], scaling=co
nstrained, shading=z,\012titlefont=[TIMES,ROMAN,22], title=`The T
wo Wireframes`);"}}{SEP_R 220 0}{COM_R 221 0{TEXT 1 77 "Define th
e faces of the reciprocal pair of an icosahedron and a dodecahedr
on:"}}{SEP_R 222 0}{INP_R 223 0 "> "{TEXT 0 112 "vertfigicosa := \+
\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 224 0}{INP_R 
225 0 "> "{TEXT 0 44 "display3d(vertfigicosa,scaling=constrained)
;"}}{SEP_R 226 0}{COM_R 227 0{TEXT 1 72 "Define the midpoint of a
n edge of a pentagonal face (and its antipodal):"}}{SEP_R 228 0}
{INP_R 229 0 "> "{TEXT 0 72 "mid := s-> evalm(((-1)^(s)/2)*([1,1,
1]+transpose(R)&*[1,1,1])): \012mid(0);"}}{OUT_R 230 0 229{DAG (3
n4\`VECTOR`,2[2,4+5/3j2x0001j2x0004p9*3j2x0005/3p9j2x0002p8+5/3j2
x0003pBp9pEp8p11}}{SEP_R 231 0}{INP_R 232 0 "> "{TEXT 0 132 "vert
figcap := (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 233 0}{INP_R 234 0 "> "{TEXT 0 53 "display3d(\{s
eq(seq(vertfigcap(n,s),n=1..5),s=0..1)\});"}}{SEP_R 235 0}{INP_R 
236 0 "> "{TEXT 0 146 "vertfigbelt := (m,n,s)-> coltri(\012op( ma
p( (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 237 0}
{INP_R 238 0 "> "{TEXT 0 75 "display3d(\{ seq( seq( seq(vertfigbe
lt(m,n,s), m=1..5), n=1..5), s=0..1) \});"}}{SEP_R 239 0}{INP_R 
240 0 "> "{TEXT 0 248 "display3d(\012\{ op(vertfigicosa), \012   \+
seq(seq(vertfigcap(n,s),n=1..5),s=0..1),\012   seq(seq(seq(vertfi
gbelt(m,n,s),m=1..5),n=1..5),s=0..1) \},\012scaling=constrained,\
012titlefont=[TIMES,ROMAN,22],\012title=`Reciprocal Pair of an Ic
osahedron and a Dodecahedron`);"}}{SEP_R 241 0}{COM_R 242 0{TEXT 
1 40 "Define the faces of an icosidodecaderon:"}}{SEP_R 243 0}
{INP_R 244 0 "> "{TEXT 0 95 "truncicosa := \012\{ seq( seq( trunc
tri(\012seq(icosa(n,k,l), l=1..3), 1,0.4,0.7), k=0..3), n=1..5) \
}:"}}{SEP_R 245 0}{INP_R 246 0 "> "{TEXT 0 137 "trunccap := s->po
lygonplot3d(\012[ seq( evalm((-1)^(s)*R^(n)&*[(1+sqrt(5))/4, (3+s
qrt(5))/4, 1/2]), n=1..5) ],\012color=COLOR(RGB,0.5,1,0.8) ):"}}
{OUT_R 247 0 246{TEXT 2 42 "Warning, `n` is implicitly declared l
ocal\012"}}{SEP_R 248 0}{INP_R 249 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) ],\012col
or=COLOR(RGB,0.5,1,0.8) ):"}}{OUT_R 250 0 249{TEXT 2 42 "Warning,
 `n` is implicitly declared local\012"}}{SEP_R 251 0}{INP_R 252 0
 "> "{TEXT 0 212 "display3d(\012\{ op(truncicosa), \012seq(truncc
ap(s), s=0..1), \012seq( seq(truncbelt(m,s), m=1..5), s=0..1) \},
\012style=patch, scaling=constrained, orientation=[79,76],\012tit
lefont=[TIMES,ROMAN,22], title=`Icosidodecahedron`);"}}{SEP_R 253
 0}{INP_R 254 0 "> "{TEXT 0 113 "gvplot( display3d(\012\{ op(trun
cicosa), \012seq(trunccap(s), s=0..1), \012seq( seq(truncbelt(m,s
), m=1..5), s=0..1) \}\012) );"}}{SEP_R 255 0}{INP_R 256 0 "> "
{TEXT 0 152 "colwirecube := (n,c1,c2,c3)->display3d(\012\{ seq( s
eq( colline( \012evalm(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 257 0 256
{TEXT 2 84 "Warning, `k` is implicitly declared local\012Warning,
 `l` is implicitly declared local\012"}}{SEP_R 258 0}{COM_R 259 0
{TEXT 1 53 "3 pentagons meeting at a vertex and a reference cube.
"}}{SEP_R 260 0}{INP_R 261 0 "> "{TEXT 0 125 "display3d(\012\{ ca
p(0), seq(belt(n,0),n=1..2), colwirecube(1,1,1,0) \},\012style=pa
tch, scaling=constrained, orientation=[-37,97] );"}}{SEP_R 262 0}
{INP_R 263 0 "> "{TEXT 0 0 ""}}}{END}
