x( 0) = 0: y( 0) = 70: z( 0) = 0
x( 1) = 70: y( 1) =-70: z( 1) = 70
x( 2) =-70: y( 2) =-70: z( 2) = 70
x( 3) =-70: y( 3) =-70: z( 3) =-70
x( 4) = 70: y( 4) =-70: z( 4) =-70
x( 5) = 70: y( 5) =-70: z( 5) = 70
zoom = 4
sw = 640
sh = 480
a = 0
a = a + 0.01
xx = x(0)
yy = y(0)
zz = z(0)
rot yy, zz, a
rot xx, zz, a
proj p0, q0, xx, yy, zz
'draw all triangles
x1 = x(i)
y1 = y(i)
z1 = z(i)
rot y1, z1, a
rot x1, z1, a
x2 = x(i + 1)
y2 = y(i + 1)
z2 = z(i + 1)
rot y2, z2, a
rot x2, z2, a
proj p, q, x1, y1, z1
pset (sw
/2 + zoom
*p0
, sh
/2 - zoom
*q0
+ oy
), c
line -(sw
/2 + zoom
*p
, sh
/2 - zoom
*q
+ oy
), c
proj p, q, x2, y2, z2
line -(sw
/2 + zoom
*p
, sh
/2 - zoom
*q
+ oy
), c
line -(sw
/2 + zoom
*p0
, sh
/2 - zoom
*q0
+ oy
), c
'draw the visible triangles
x1 = x(i)
y1 = y(i)
z1 = z(i)
rot y1, z1, a
rot x1, z1, a
x2 = x(i + 1)
y2 = y(i + 1)
z2 = z(i + 1)
rot y2, z2, a
rot x2, z2, a
'vector cross product
cz = (x1 - xx)*(y2 - yy) - (y1 - yy)*(x2 - xx)
proj p, q, x1, y1, z1
pset (sw
/2 + zoom
*p0
, sh
/2 - zoom
*q0
+ oy
), c
line -(sw
/2 + zoom
*p
, sh
/2 - zoom
*q
+ oy
), c
proj p, q, x2, y2, z2
line -(sw
/2 + zoom
*p
, sh
/2 - zoom
*q
+ oy
), c
line -(sw
/2 + zoom
*p0
, sh
/2 - zoom
*q0
+ oy
), c
'draw the base
xx = x(1)
yy = y(1)
zz = z(1)
rot yy, zz, a
rot xx, zz, a
x1 = x(2)
y1 = y(2)
z1 = z(2)
rot y1, z1, a
rot x1, z1, a
x2 = x(3)
y2 = y(3)
z2 = z(3)
rot y2, z2, a
rot x2, z2, a
cz = (x1 - xx)*(y2 - yy) - (y1 - yy)*(x2 - xx)
proj p0, q0, xx, yy, zz
pset (sw
/2 + zoom
*p0
, sh
/2 - zoom
*q0
+ oy
), c
xx = x(i)
yy = y(i)
zz = z(i)
rot yy, zz, a
rot xx, zz, a
proj p, q, xx, yy, zz
line -(sw
/2 + zoom
*p
, sh
/2 - zoom
*q
+ oy
), c
'rotate
x = xx
y = yy
'perspective projection
dz = z0 + z
p = x*d/dz
q = y*d/dz