16
Programs / Re: Rotating Pyramid
« on: March 06, 2022, 03:50:39 pm »
B+ mode time!
Code: QB64: [Select]
- x( 0) = 0: y( 0) = 0: z( 0) = 0
- x( 1) = 50: y( 1) =-140: z( 1) = 50
- x( 2) =-50: y( 2) =-140: z( 2) = 50
- x( 3) =-50: y( 3) =-140: z( 3) =-50
- x( 4) = 50: y( 4) =-140: z( 4) =-50
- x( 5) = 50: y( 5) =-140: z( 5) = 50
- zoom = 5
- sw = 640
- sh = 480
- screen 12
- a = 0
- a=a+0.01
- xx = x(0)
- yy = y(0)
- zz = z(0)
- rot xx, zz, a
- proj p0, q0, xx, yy, zz
- 'draw all triangles
- x1 = x(i)
- y1 = y(i)
- z1 = z(i)
- rot x1, z1, a
- x2 = x(i + 1)
- y2 = y(i + 1)
- z2 = z(i + 1)
- rot x2, z2, a
- proj p, q, x1, y1, z1
- proj p, q, x2, y2, z2
- 'draw the visible triangles
- x1 = x(i)
- y1 = y(i)
- z1 = z(i)
- rot x1, z1, a
- x2 = x(i + 1)
- y2 = y(i + 1)
- z2 = z(i + 1)
- rot x2, z2, a
- 'vector cross product
- 'cx = y1*z2 - z1*y2
- 'cy = x1*z2 - z1*x2
- cz = x1*y2 - y1*x2
- proj p, q, x1, y1, z1
- proj p, q, x2, y2, z2
- _limit 30
- 'rotate
- x = xx
- y = yy
- 'perspective projection
- dz = z0 + z
- p = x*d/dz
- q = y*d/dz