{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 112{COM_R 2 0{TEXT 1 211 "G
abor Toth: Pyramids, Prisms, Antiprisms and the Icosahedron .\015
\015The following Maple file creates some graphics used in Sectio
n 17: The Five Platonic Solids of ` Glimpses of Algebra and Geome
try', Springer, 1997."}}{SEP_R 3 0}{INP_R 4 0 "> "{TEXT 0 12 "wit
h(plots):"}}{SEP_R 5 0}{INP_R 6 0 "> "{TEXT 0 94 "Rz := theta->ar
ray(\012[ [cos(theta), -sin(theta),0], [sin(theta), cos(theta), 0
], [0, 0, 1] ] ):"}}{SEP_R 7 0}{COM_R 8 0{TEXT 1 44 "Triangle in \+
space with given vertex-vectors:"}}{SEP_R 9 0}{INP_R 10 0 "> "
{TEXT 0 89 "tri := (x1,x2,x3)->polygonplot3d(\012map( (x->convert
(x,list)), [x1,x2,x3] ),\012thickness=2 ):"}}{SEP_R 11 0}{COM_R 
12 0{TEXT 1 54 "A colored triangle in space with given vertex-vec
tors:"}}{SEP_R 13 0}{INP_R 14 0 "> "{TEXT 0 141 "coltri := (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 15 0}{COM_R 16 0{TEXT 1 68 "We now build a pentagonal \+
pyramid with equilateral triangular faces:"}}{SEP_R 17 0}{INP_R 
18 0 "> "{TEXT 0 168 "h := sqrt(1-(1/(2*sin(Pi/5))^2)):\012sides1
 := display3d(\012\{ seq( tri(\012evalm(Rz(2*Pi/5)^(k)&*[1,0,0]),
 evalm(Rz(2*Pi/5)^(k+1)&*[1,0,0]), [0,0,h],\0120.5, 1, 0.8), k=1.
.5) \} ):"}}{SEP_R 19 0}{INP_R 20 0 "> "{TEXT 0 73 "display3d(sid
es1,\012style=patch, scaling=constrained, orientation=[61,43]);"}
}{SEP_R 21 0}{INP_R 22 0 "> "{TEXT 0 71 "base:=polygonplot3d(\012
[ seq(evalm(Rz(2*Pi/5)^(k)&*[1,0,0]), k=1..5) ] ):"}}{SEP_R 23 0}
{INP_R 24 0 "> "{TEXT 0 136 "display3d(\{sides1,base\},\012style=
patch, scaling=constrained, orientation=[61,43],\012titlefont=[TI
MES,ROMAN,22], title=`Pentagonal Pyramid`);"}}{SEP_R 25 0}{INP_R 
26 0 "> "{TEXT 0 136 "sides2 := display3d(\012\{ seq( tri( \012ev
alm(Rz(2*Pi/5)^(k)&*[1,0,0]), evalm(Rz(2*Pi/5)^(k+1)&*[1,0,0]), [
0,0,-h],\0120.5, 1, 0.8), k=1..5) \} ):"}}{SEP_R 27 0}{INP_R 28 0
 "> "{TEXT 0 146 "display3d(\{sides1, sides2\},\012style=patch, s
caling=constrained, orientation=[57,75],\012titlefont=[TIMES,ROMA
N,22], title=`Double Pentagonal Pyramid`);"}}{SEP_R 29 0}{INP_R 
30 0 "> "{TEXT 0 150 "display3d(\{sides1, sides2\},\012style=wire
frame, scaling=constrained, orientation=[57,75],\012titlefont=[TI
MES,ROMAN,22], title=`Double Pentagonal Pyramid`);"}}{SEP_R 31 0}
{INP_R 32 0 "> "{TEXT 0 87 "bottom := polygonplot3d(\012[ seq( ev
alm(Rz(2*Pi/5)^(k)&*[1, 0, -sqrt(3)/4]), k=1..5) ] ):"}}{SEP_R 33
 0}{INP_R 34 0 "> "{TEXT 0 93 "top := polygonplot3d(\012[ seq( ev
alm(Rz(Pi/5)&*Rz(2*Pi/5)^(k)&*[1, 0, sqrt(3)/4]), k=1..5) ] ):"}}
{SEP_R 35 0}{INP_R 36 0 "> "{TEXT 0 79 "display3d(\{bottom, top\}
,\012style=patch, scaling=constrained, orientation=[90,0]);"}}
{SEP_R 37 0}{INP_R 38 0 "> "{TEXT 0 141 "faceup := tri(\012[1, 0,
 -sqrt(3)/4], evalm(Rz(Pi/5)&*[1, 0, sqrt(3)/4]),\012            \+
                  evalm(Rz(2*Pi/5)&*[1, 0, -sqrt(3)/4]) ):"}}
{SEP_R 39 0}{INP_R 40 0 "> "{TEXT 0 88 "display3d(\{bottom, top, \+
faceup\},\012style=patch, scaling=constrained, orientation=[37,75
]);"}}{SEP_R 41 0}{INP_R 42 0 "> "{TEXT 0 200 "faceups := k->tri(
 \012op( map( (x->evalm(Rz(2*Pi/5)&*x)) @@ k,  \012[ [1, 0, -sqrt
(3)/4], evalm(Rz(Pi/5)&*[1, 0, sqrt(3)/4]),\012                  \+
              evalm(Rz(2*Pi/5)&*[1, 0, -sqrt(3)/4]) ]  \012)) ):"
}}{SEP_R 43 0}{INP_R 44 0 "> "{TEXT 0 105 "display3d(\{bottom, to
p, seq(faceups(k), k=1..5)\},\012style=patch, scaling=constrained
, orientation=[37,75]);"}}{SEP_R 45 0}{INP_R 46 0 "> "{TEXT 0 131
 "facedown := tri(\012evalm(Rz(Pi/5)&*[1, 0, sqrt(3)/4]), evalm(R
z(2*Pi/5)&*[1, 0, -sqrt(3)/4]),\012evalm(Rz(3*Pi/5)&*[1, 0, sqrt(
3)/4]) ):"}}{SEP_R 47 0}{INP_R 48 0 "> "{TEXT 0 98 "display3d(\{b
ottom, top, faceup, facedown\},\012style=patch, scaling=constrain
ed, orientation=[37,75]);"}}{SEP_R 49 0}{INP_R 50 0 "> "{TEXT 0 
193 "facedowns := k->tri(\012op( map( (x->evalm(Rz(2*Pi/5)&*x)) @
@ k,\012[ evalm(Rz(Pi/5)&*    [1, 0, sqrt(3)/4]),\012  evalm(Rz(2
*Pi/5)&*[1, 0, -sqrt(3)/4]),\012  evalm(Rz(3*Pi/5)&*[1, 0, sqrt(3
)/4])  ] \012)) ):"}}{SEP_R 51 0}{INP_R 52 0 "> "{TEXT 0 190 "dis
play3d(\{bottom, top, seq(facedowns(k), k=1..5), seq(faceups(k), \+
k=1..5)\},\012style=patch, scaling=constrained, orientation=[37,7
5],\012titlefont=[TIMES,ROMAN,22], title=`Pentagonal Antiprism`);
"}}{SEP_R 53 0}{INP_R 54 0 "> "{TEXT 0 172 "cap1 := display3d(\01
2\{ seq( tri(\012evalm(Rz(Pi/5)&*Rz(2*Pi/5)^(k)&*[1, 0, sqrt(3)/4
]),\012evalm(Rz(Pi/5)&*Rz(2*Pi/5)^(k+1)&*[1, 0, sqrt(3)/4]), \012
[0, 0, h+sqrt(3)/4]),\012k=1..5) \} ):"}}{SEP_R 55 0}{INP_R 56 0 
"> "{TEXT 0 155 "cap2 := display3d(\012\{ seq( tri(\012evalm(Rz(2
*Pi/5)^(k)&*[1, 0, -sqrt(3)/4]),\012evalm(Rz(2*Pi/5)^(k+1)&*[1, 0
, -sqrt(3)/4]), \012[0, 0, -h-sqrt(3)/4]),\012k=1..5) \} ):"}}
{SEP_R 57 0}{INP_R 58 0 "> "{TEXT 0 79 "display3d(\{cap1, cap2\},
\012style=patch, scaling=constrained, orientation=[37,68]);"}}
{SEP_R 59 0}{INP_R 60 0 "> "{TEXT 0 181 "display3d(\{ seq(facedow
ns(k), k=1..5), seq(faceups(k), k=1..5), cap1, cap2\},\012style=p
atch, scaling=constrained, orientation=[37,68],\012titlefont=[TIM
ES,ROMAN,22], title=`Icosahedron`);"}}{SEP_R 61 0}{INP_R 62 0 "> \+
"{TEXT 0 176 "display3d(\{seq(facedowns(k),k=1..5),seq(faceups(k)
,k=1..5),cap1,cap2\},\012style=wireframe,scaling=constrained,orie
ntation=[71,45],\012titlefont=[TIMES,ROMAN,22],title=`Icosahedron
`);"}}{SEP_R 63 0}{COM_R 64 0{TEXT 1 43 "A tetrahedron in space w
ith given vertices:"}}{SEP_R 65 0}{INP_R 66 0 "> "{TEXT 0 81 "tet
 := (x1,x2,x3,x4)->\{ seq( tri( op(subsop(k=NULL, [x1,x2,x3,x4]))
 ), k=1..4) \}:"}}{OUT_R 67 0 66{TEXT 2 42 "Warning, `k` is impli
citly declared local\012"}}{SEP_R 68 0}{COM_R 69 0{TEXT 1 40 "Ide
ntity and half-turns around the axes:"}}{SEP_R 70 0}{INP_R 71 0 "
> "{TEXT 0 180 "H(0) := array(1..3, 1..3, identity):\012H(1) := a
rray([ [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] ]):"}}{SEP_R 72 0}{COM_R 73 0{TEXT 1 32 "Vertices of regul
ar tetrahedron:"}}{SEP_R 74 0}{INP_R 75 0 "> "{TEXT 0 27 "a:=k->e
valm(H(k)&*[1,1,1]):"}}{SEP_R 76 0}{INP_R 77 0 "> "{TEXT 0 38 "di
splay3d( tet( seq(a(k), k=0..3) ) );"}}{SEP_R 78 0}{INP_R 79 0 ">
 "{TEXT 0 100 "display3d(tet( seq(a(k), k=0..3)),\012style=patch,
 scaling=constrained, axes=boxed, tickmarks=[0,0,0]);"}}{SEP_R 80
 0}{COM_R 81 0{TEXT 1 35 "Line in space with given endpoints:"}}
{SEP_R 82 0}{INP_R 83 0 "> "{TEXT 0 95 "line:=(x1,x2)->polygonplo
t3d(\012[convert(x1, list), convert(x2, list)],\012style=line, th
ickness=3):"}}{SEP_R 84 0}{COM_R 85 0{TEXT 1 22 "Wireframe tetrah
edron:"}}{SEP_R 86 0}{INP_R 87 0 "> "{TEXT 0 112 "wiretet:=(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 88 0}{INP_R 89 0 "
> "{TEXT 0 92 "display3d(wiretet( seq(a(k), k=0..3) ),\012scaling
=constrained, axes=boxed, tickmarks=[0,0,0]);"}}{SEP_R 90 0}
{COM_R 91 0{TEXT 1 46 "A paralleogram in space with 3 given verti
ces:"}}{SEP_R 92 0}{INP_R 93 0 "> "{TEXT 0 105 "par := (x0,x1,x2)
->polygonplot3d(\012map( (x->convert(x,list)), \012[x1,x0,x2,eval
m(x1+x2-x0)] ),\012thickness=2):"}}{SEP_R 94 0}{INP_R 95 0 "> "
{TEXT 0 133 "display3d(par([0,0,0], [1,1/2,0], [0,1/2,1]),\012sty
le=patch, scaling=constrained, axes=normal,\012tickmarks=[0,0,0],
 orientation=[18,66]);"}}{SEP_R 96 0}{INP_R 97 0 "> "{TEXT 0 74 "
ptop := polygonplot3d(\012[ seq( evalm(Rz(2*Pi/5)^(k)&*[1,0,1]), \+
k=1..5) ] ):"}}{SEP_R 98 0}{INP_R 99 0 "> "{TEXT 0 78 "pbottom :=
 polygonplot3d(\012[ seq( evalm(Rz(2*Pi/5)^(k)&*[1,0,-1]), k=1..5
) ] ):"}}{SEP_R 100 0}{INP_R 101 0 "> "{TEXT 0 61 "pside := par([
1,0,-1], evalm(Rz(2*Pi/5)&*[1,0,-1]), [1,0,1]):"}}{SEP_R 102 0}
{INP_R 103 0 "> "{TEXT 0 68 "display3d(\{pbottom, ptop, pside\},\
012style=patch, scaling=constrained);"}}{SEP_R 104 0}{INP_R 105 0
 "> "{TEXT 0 109 "pfaces := k->par(\012op( map( (x->evalm(Rz(2*Pi
/5)&*x)) @@ k, \012[ [1,0,-1], Rz(2*Pi/5)&*[1,0,-1], [1,0,1] ] ))
 ):"}}{SEP_R 106 0}{INP_R 107 0 "> "{TEXT 0 139 "display3d(\{pbot
tom, ptop, seq(pfaces(k), k=1..5)\},\012style=patch, scaling=cons
trained,\012titlefont=[TIMES,ROMAN,22], title=`Pentagonal Prism`)
;"}}{SEP_R 108 0}{COM_R 109 0{TEXT 1 48 "A parallelepiped in spac
e with 4 given vertices:"}}{SEP_R 110 0}{INP_R 111 0 "> "{TEXT 0 
210 "parpip := (x0,x1,x2,x3)->\012\{ par(x0, x1, x2), par(x0, x2,
 x3), par(x0, x1, x3), \012par(x1, evalm(x1+x2-x0), evalm(x1+x3-x
0)),\012par(x2, evalm(x1+x2-x0), evalm(x2+x3-x0)),\012par(x3, eva
lm(x1+x3-x0), evalm(x2+x3-x0)) \}:"}}{SEP_R 112 0}{INP_R 113 0 ">
 "{TEXT 0 142 "display3d(parpip([0,0,0],[1,0,0],[1/2,1/2,1],[0,1,
0]),\012style=patch, scaling=constrained, \012axes=boxed, tickmar
ks=[0,0,0], orientation=[70,69]);"}}}{END}
