{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 18 0 0 0 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 257 "" 1 24
0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 }{CSTYLE ""
-1 264 "" 0 1 0 0 0 0 1 0 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 1 0 0 0 0 0 0
0 0 }{CSTYLE "" -1 267 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE ""
-1 268 "" 0 1 0 0 0 0 0 1 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 }{CSTYLE "" -1 273 "" 0 1 0 0
0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 274 "" 0 1 0 0 0 0 0 1 0 0 0 0 0
0 0 }{CSTYLE "" -1 275 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE ""
-1 276 "" 0 1 0 0 0 0 1 0 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 257 24 "The 4-D Measure Polytope" }}
{PARA 256 "" 0 "" {TEXT 256 13 "The Hypercube" }}{PARA 0 "" 0 ""
{TEXT -1 5 " " }}{PARA 0 "" 0 "" {TEXT -1 402 " These are
the procedures necessary to generate the various images of the hyperc
ube. In order to keep the text uninterupted, placing the cursor on th
e first line of commands (in red) will execute all procedures necessar
y to define the polytope. Maple will then take you to the first line \+
of the next execution group. You may need to scroll back to read the \+
text which precedes each display." }}{PARA 0 "" 0 "" {TEXT -1 103 "For
a detailed explanation of the procedures below, scroll through them a
nd read the text and refer to " }{HYPERLNK 17 "Appendix A." 1 "proc.mw
s" "" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "" 0 "" {TEXT
-1 81 " These are the libraries of commands needed to execute the
procedures below." }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 25 "with(linalg):
with(plots):" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT
-1 6 " " }{TEXT 262 7 "Project" }{TEXT -1 54 " is a procedure whi
ch takes a polytope P and a vector " }{TEXT 259 1 "v" }{TEXT -1 66 " a
nd projects the vertices of P onto the hyperplane orthogonal to " }
{TEXT 258 1 "v" }{TEXT -1 1 "." }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 314 "
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],P[3]];\nend:" }}{PARA 0 "" 0 "" {TEXT -1
0 "" }}{PARA 0 "" 0 "" {TEXT -1 6 " " }{TEXT 268 9 "Perspproj" }
{TEXT -1 51 " is a procedure which takes a polytope P, a vector " }
{TEXT 260 1 "v" }{TEXT -1 20 ", and a real number " }{TEXT 263 1 "f" }
{TEXT -1 67 ", and projects the vertices of P onto the hyperplane orth
ogonal to " }{TEXT 265 1 "v" }{TEXT -1 40 ", with a perspective distan
ce factor of " }{TEXT 264 1 "f" }{TEXT -1 23 ". For large values of \+
" }{TEXT 266 1 "f" }{TEXT -1 158 ", the object will be perspected as i
f it were viewed from far away (though no smaller). Thus, the effects
of perspective will be minimal. Smaller values of " }{TEXT 267 1 "f
" }{TEXT -1 180 " will generate a greater perspective effect in the pr
ojection. Values must be greater than 1, and this often results in a \+
division by 0. Other values may create the same problem." }}{PARA 0 "
> " 0 "" {MPLTEXT 1 0 512 "perspproj:=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],P[3]];\nend:" }}
{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 6 " " }
{TEXT 269 10 "Polydecode" }{TEXT -1 185 " is a procedure which takes a
polytope P and lists the coordinates of the vertices of each polygona
l face. This defines the polytope by its faces, allowing polygonplot3
D to display it." }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 103 "polydecode:=pr
oc(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 270 8 "Multpoly" }{TEXT -1 178 " is a \+
procedure which take a polytope P and a rotation matrix M and multipli
es each of the vertices (thought of as column matrices) by M, generati
ng a rotation about some vector " }{TEXT 261 1 "v" }{TEXT -1 1 "." }}
{PARA 0 "> " 0 "" {MPLTEXT 1 0 363 "multpoly:=proc(P,M) local i;\n[[se
q([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],P[3]];\nend:" }}{PARA 0 ""
0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 33 "The 16 vertices of t
he hypercube:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 327 "p[1]:=[-1,-1,-1,-
1]: p[2]:=[1,-1,-1,-1]:\np[3]:=[-1,1,-1,-1]: p[4]:=[1,1,-1,-1]:\np[
5]:=[-1,-1,1,-1]: p[6]:=[1,-1,1,-1]:\np[7]:=[-1,1,1,-1]: p[8]:=[1
,1,1,-1]:\np[9]:=[-1,-1,-1,1]: p[10]:=[1,-1,-1,1]:\np[11]:=[-1,1,-1,
1]: p[12]:=[1,1,-1,1]:\np[13]:=[-1,-1,1,1]: p[14]:=[1,-1,1,1]:\np[
15]:=[-1,1,1,1]: p[16]:=[1,1,1,1]:" }}{PARA 0 "" 0 "" {TEXT -1 0 "
" }}{PARA 0 "" 0 "" {TEXT -1 85 "The 24 polygons of the hypercube are \+
each squares. They are given by their vertices." }}{PARA 0 "> " 0 ""
{MPLTEXT 1 0 487 "f[1]:=[1,5,13,9]: f[2]:=[2,6,14,10]:\nf[3]:=[3,7,
15,11]: f[4]:=[4,8,16,12]:\nf[5]:=[1,3,11,9]: f[6]:=[2,4,12,10]:
\nf[7]:=[5,7,15,13]: f[8]:=[6,8,16,14]:\nf[9]:=[1,2,10,9]: f[10]:
=[3,4,12,11]:\nf[11]:=[5,6,14,13]: f[12]:=[7,8,16,15]:\nf[13]:=[1,3,7
,5]: f[14]:=[2,4,8,6]:\nf[15]:=[9,11,15,13]: f[16]:=[10,12,16,14]:
\nf[17]:=[1,2,6,5]: f[18]:=[3,4,8,7]:\nf[19]:=[9,10,14,13]: f[20]:=
[11,12,16,15]:\nf[21]:=[1,2,4,3]: f[22]:=[5,6,8,7]:\nf[23]:=[9,10,1
2,11]: f[24]:=[13,14,16,15]:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA
0 "" 0 "" {TEXT -1 83 "The eight cells of the hypercube are each cubes
. They are given by their polygons." }}{PARA 0 "> " 0 "" {MPLTEXT 1
0 197 "c[1]:=[1,3,5,7,13,15]:\nc[2]:=[2,3,6,8,14,16]:\nc[3]:=[1,2,9,11
,17,19]:\nc[4]:=[3,4,10,12,18,20]:\nc[5]:=[5,6,9,10,21,23]:\nc[6]:=[7,
8,11,12,22,24]:\nc[7]:=[13,14,17,18,21,22]:\nc[8]:=[15,16,19,20,23,24]
:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 286 "The
data structure used for the 4-polytope is a list of a list of vertice
s, whose coordinates are defined above, a list of polygons given by th
e number of their vertices, and a list of cells given by the number of
their polygons. The list structure is: [[vertices],[polygons],[cells
]]." }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 72 "hypercube:=[[seq(p[i],i=1..1
6)],[seq(f[i],i=1..24)],[seq(c[i],i=1..8)]]:" }}{PARA 0 "" 0 "" {TEXT
-1 0 "" }}}{PARA 257 "" 0 "" {TEXT 271 13 "The Hypercube" }}{PARA 0 "
" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT 272 9 "Existence" }}
{PARA 0 "" 0 "" {TEXT -1 605 " The so-called hypercube, or 4-
cube, is undoubtedly the most familiar and frequently discussed polyto
pe in a higher dimension. It has even made its way into popular ficti
on in one form or another. In one piece, an architect builds a house \+
which folds up into 4-space, so that its occupants can continuously wa
lk in any direction from one room into each of the other seven. Perha
ps its popularity is due to the easy regularity with which it is const
ructed. Though a simplex is, as the name suggests, a simpler polytope
, it is the measure polytope with which we generally feel most comfort
able." }}{PARA 0 "" 0 "" {TEXT -1 496 " The reason this type \+
of polytope is referred to as a \"measure\" is this: it is the unit i
n each space in which we measure. The measure polytope in a line is a
line-segment, which is the same as its simplex. (1-space is a rather
boring topic of discussion, but is included for consistency.) In 1-sp
ace, we measure content in terms of length. The measure of any region
of the line can be expressed as a real number times the unit length, \+
that is, the measure polytope of side-length 1." }}{PARA 0 "" 0 ""
{TEXT -1 371 " In 2-space, the measure polytope is a square. \+
You can think of generating it by first moving a point one unit in on
e of the base directions (say, along the x-axis), then turning perpind
icular to it and sliding the whole line segment one unit in the orthog
onal base direction (the y-axis). This sweeps out a square of side-le
ngth 1, with which we measure area." }}{PARA 0 "" 0 "" {TEXT -1 173 " \+
Sliding the square one unit in a direction perpendicular to i
ts face sweeps out a cube, the measure polyhedron. We speak of volume
as being in cubic units (e.g., " }{XPPEDIT 18 0 "cm^3" "*$%#cmG\"\"$
" }{TEXT -1 241 "). Just as line-segments can be placed end-to-end to
fill 1-space, and squares can be laid edge-to-edge to fill the plane,
cubes can be placed together neatly to fill all of 3-space. (This is
the reason bricks are shaped the way they are.)" }}{PARA 0 "" 0 ""
{TEXT -1 542 " If we look at the vertex of any measure polyto
pe, we see an edge coming from it parallel to each of the orthogonal b
ases of the vector-space. There are two perpendicular edges meeting a
t each corner of the square, and three perpendicular edges meeting at \+
each corner of the cube. If we take a unit cube, and slide it in a di
rection perpendicular to all six faces, we would generate the measure \+
polytope for 4-space, having four edges meet at a vertex, each perpend
icular to the other three. This polytope is the famous hypercube." }}
{PARA 0 "" 0 "" {TEXT -1 349 " Furthermore, since n-space is d
efined by n orthogonal bases, it should be clear that one can construc
t a polytope with n edges meeting at a vertex, each parallel to a base
, and so each perpendicular to one another. With this sort of argumen
t, we can prove more rigorously that there is a measure polytope which
exists in every dimension. " }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}
{PARA 0 "" 0 "" {TEXT 273 9 "Structure" }}{PARA 0 "" 0 "" {TEXT -1
366 " The construction of the hypercube is usually best thoug
ht of in the terms mentioned above. First a vertex sweeps out a line.
That line then sweeps out a plane. When it does so, each of the ver
tices sweeps out another line. So the four sides of a square come fro
m the starting and stopping point of the line, and the two lines creat
ed by its end-points." }}{PARA 0 "" 0 "" {TEXT -1 530 " When \+
a square sweeps out a cube, each of the four corners of the square swe
eps out new lines, which become four additional edges. Each edge of t
he cube sweeps out a new square. So the six faces of the cube come fr
om the starting and stopping points of the original square, plus the f
our faces swept out by its edges. The 12 edges come from the 8 edges \+
of the initial and final square, plus the four edges generated by the \+
four corners of the square. The number of vertices is again doubled, \+
so that a cube has eight." }}{PARA 0 "" 0 "" {TEXT -1 119 " N
ow, when we think of this cube moving perpendicular to itself, we are \+
thinking of a direction orthogonal to " }{TEXT 276 3 "all" }{TEXT -1
652 " the faces of the cube. We certainly can't point in that directi
on. But we should be able to see that the cube will have a starting a
nd stopping point, which are two of the cubic cells of the hypercube. \+
Also, we should see that each of the six faces of the cube will sweep
out cubes. So the hypercube consists of eight cubes in all. The 12 \+
edges sweep out 12 new faces. These, together with the 12 faces of th
e first and last cube, total 24 in the hypercube. There is one new ed
ge for each corner of the cube, plus 12 edges in the first cube and 12
edges in the last comes to 24. And again, the vertices are doubled, \+
so that a hypercube has 16." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA
0 "" 0 "" {TEXT 274 15 "Schl\344fli Symbol" }}{PARA 0 "" 0 "" {TEXT
-1 504 " The Schl\344fli symbol of the measure polytope in 2-
space, the square, is \{4\}. The next order measure polytope is gener
ated by folding three of these squares about a point. So the symbol f
or the cube is \{4,3\}. Just as four squares about a point lie in a p
lane, four cubes about an edge lie in a hyperplane. We form the hyper
cube in roughly the same way we form the cube: by removing one of the \+
cubes about the edge and folding the other three. Hence, the symbol f
or the hypercube is \{4,3,3\}. " }}{PARA 0 "" 0 "" {TEXT -1 385 " \+
As we can now tell from the symbol, the vertex figure of the hype
rcube is a tetrahedron. Just as the vertex figure of the 3-measure is
a 2-simplex, the vertex figure of the 4-measure is a 3-simplex. Like
wise, the vertex figure of the n-measure will be a (n-1)-simplex. So \+
the symbols for all the measure polytopes have a first number 4 and th
e rest of the entries are 3's." }}{PARA 0 "" 0 "" {TEXT -1 153 " \+
Also, the dual of \{4,3,3\} is the polytope represented by \{3,3,4
\}. This is the so-called hyperoctahedron, which we discuss in the ne
xt section." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT
275 11 "Coordinates" }}{PARA 0 "" 0 "" {TEXT -1 528 " In orde
r to generate ordered quadruples of coordinates for the hypercube, it \+
helps to understand how we might find the coordinates of other measure
s. In a line, the endpoints can simply be expressed by any two number
s, so let's say (1) and (-1). In the plane, we can think of connectin
g a point from each quadrant. Thus, the ordered pairs for the vertice
s of a square look like combinations of 1 and -1. These possible comb
inations are called permutations. The corners look like (1,1), (1,-1)
, (-1,1) and (-1,-1)." }}{PARA 0 "" 0 "" {TEXT -1 469 " Movin
g to the cube, we can think of sliding the square in the xy-plane down
to z = -1 and up to z = 1. Thus, the coordinates of the cube are the
permutations of (\2611,\2611,\2611). From this, we can see that the \+
coordinates for the corners of a hypercube should come from permuting \+
(\2611,\2611,\2611,\2611) and there are, in fact, 16 possibilities. N
ow we can easily induce that the coordinates for any n-measure polytop
e (with sidelenght 2) can be found by permuting n \2611's." }}{PARA 0
"" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA
0 "" 0 "" {TEXT -1 256 " Here is a projected image of the hype
rcube. Its cells can be easily distinguished as cubes if you imagine \+
that the cubes are slightly slanted. That is, the angles are distorte
d. You can change the projection vector to generate different images.
" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 105 "polygonplot3d(polydecode(proje
ct(hypercube,[1,3,4,2])),scaling=constrained,style=wireframe,thickness
=2);\n" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "" 0 ""
{TEXT -1 549 " Maple can display a series of images from diff
erent points of view by varying the projection vector. The sequence b
elow in generated by looking at the hypercube from the direction of (1
,0,0,0), varying it to (1,1,1,1) and back again. Notice that because \+
the initial projection is along an axis, we are looking directly at on
e of the cubic cells, so it completly covers the others. (Six of them
are hidden by the sides of the cube, and the seventh is directly behi
nd the one we see.) As the view changes, the other cells become visib
le." }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 205 "display([seq(polygonplot3d(
polydecode(project(hypercube,[1,evalf(sin(Pi*k/40),2),evalf(sin(Pi*k/4
0),2),evalf(sin(Pi*k/40),2)]))),k=0..40)],insequence=true,thickness=2,
scaling=constrained,style=wireframe);\n" }}}{EXCHG {PARA 0 "" 0 ""
{TEXT -1 535 " Here is a traditional perspective projection o
f the hypercube. This is the image most people associate with it, tho
ugh they may not understand it. If you imagine looking at a large cub
e very close to your face, what would the image be? The front face wo
uld be a large square, and you could see all of the other edges and ve
rtices inside this square. The back square would be smaller, and its \+
corners would be joined to the corners of the front face. Thus, the t
op, bottom, and side squares would appear to be trapezoids." }}{PARA
0 "" 0 "" {TEXT -1 643 " The image below is an analogy to thi
s sort of view. Imagine viewing the hypercube very close to one of it
s cubic cells. Then you would see the \"front\" cube as large and con
taining the rest of the object. The \"back\" cube would be smaller an
d in the middle, and its corners would be connected to the corners of \+
the front cube. The six cells in between appear as truncated pyramind
s, just as the sides of the perspective cube appear as \"truncated\" t
riangles. There is a cubic cell on top, bottom, front, back, left, an
d right, which are each distorted in this way. So in all, the display
below shows us eight cubes (not just two)." }}{PARA 0 "" 0 "" {TEXT
-1 247 " In terms of the construction of the hypercube as swe
eping a cube through 4-space, this view shows a cube which has been sw
ept outward in every direction. This of course is indistinguishable f
rom the sides of the cube being swept inward." }}{PARA 0 "> " 0 ""
{MPLTEXT 1 0 109 "polygonplot3d(polydecode(perspproj(hypercube,[1,0,0,
0],3)),\nscaling=constrained,style=wireframe,thickness=3);" }}}{EXCHG
{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 263 " \+
Now we can generate a series of images by looking at the hypercube f
rom one perspective point of view and rotating the hypercube about a p
lane. This is done by multiplying each of its vertices by a rotation \+
matrix, discussed to some extent in the text." }}{PARA 0 "" 0 ""
{TEXT -1 327 " The images show the shadow of the hypercube ch
anging in a way that brings the bottom cell to the \"back\" position i
n the center, this cell to the top, and the top one inverts and comes \+
down around the outside. Notice that the four cells around the sides \+
are simply rotating as we would expect regular cubes to rotate." }}
{PARA 0 "> " 0 "" {MPLTEXT 1 0 92 "i:='i':t:=i*Pi/30:\nM:=array([[cos(
t),-sin(t),0,0],[sin(t),cos(t),0,0],[0,0,1,0],[0,0,0,1]]);" }}{PARA 0
"> " 0 "" {MPLTEXT 1 0 160 "display([seq(polygonplot3d(polydecode(pers
pproj(multpoly(hypercube,M),[1,0,0,0],3)),scaling=constrained,style=wi
reframe,thickness=3),i=1..15)],insequence=true);" }}}{EXCHG {PARA 0 "
" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 334 " Here is
another rotation matrix which produces a fascinating image, my person
al favorite. It show the same image above, with the whole projection \+
rotating on its own axis. The reason of this is that the projection v
ector lies in one of the planes of rotation. The line orthogonal to i
t is the axis of rotation in 3-space." }}{PARA 0 "> " 0 "" {MPLTEXT 1
0 113 "i:='i':t:=i*Pi/30:\nM:=array([[cos(t),-sin(t),0,0],[sin(t),cos(
t),0,0],[0,0,cos(t),-sin(t)],[0,0,sin(t),cos(t)]]);" }}{PARA 0 "> " 0
"" {MPLTEXT 1 0 160 "display([seq(polygonplot3d(polydecode(perspproj(m
ultpoly(hypercube,M),[1,0,0,0],3)),scaling=constrained,style=wireframe
,thickness=3),i=1..15)],insequence=true);" }}}{EXCHG {PARA 0 "" 0 ""
{TEXT -1 142 " More information about the hypercube, includin
g more images, can be found in the Summary Information section. Next,
we discuss the " }{HYPERLNK 17 "hyperoctahedron" 1 "cross.mws" "" }
{TEXT -1 1 "." }}}}{MARK "0 0" 0 }{VIEWOPTS 1 1 0 1 1 1803 }