1 ' 3D transformation using 3*3 matrix math.
\r
2 ' by Svjatoslav Agejenko 2003.03
\r
10 DECLARE SUB gc (x!, y!, z!, x1!, y1!)
\r
11 DECLARE SUB setan (a!, b!, c!)
\r
12 DIM SHARED mx1, my1, mz1
\r
13 DIM SHARED mx2, my2, mz2
\r
14 DIM SHARED mx3, my3, mz3
\r
21 FOR y = -70 TO 70 STEP 5
\r
22 FOR x = -70 TO 70 STEP 5
\r
23 gc x, y, SIN((ABS(x) + ABS(y)) / 30) * 30, x1, y1
\r
30 IF a$ = "7" THEN n1 = n1 + .1
\r
31 IF a$ = "9" THEN n1 = n1 - .1
\r
32 IF a$ = "4" THEN n2 = n2 + .1
\r
33 IF a$ = "6" THEN n2 = n2 - .1
\r
34 IF a$ = "1" THEN n3 = n3 + .1
\r
35 IF a$ = "3" THEN n3 = n3 - .1
\r
36 IF a$ = CHR$(27) THEN SYSTEM
\r
39 SUB gc (x, y, z, x1, y1)
\r
41 rx = x * mx1 + y * my1 + z * mz1 ' matrix transformation
\r
42 ry = x * mx2 + y * my2 + z * mz2
\r
43 rz = x * mx3 + y * my3 + z * mz3
\r
45 rz = rz + 100 ' perspective calculation
\r
46 x1 = rx / rz * 120 + 160
\r
47 y1 = ry / rz * 120 + 100
\r
51 SUB setan (alp, bet, gam)
\r
52 mx1 = SIN(gam) * SIN(bet) * SIN(alp) + COS(gam) * COS(alp)
\r
53 my1 = COS(bet) * SIN(alp)
\r
54 mz1 = SIN(gam) * COS(alp) - COS(gam) * SIN(bet) * SIN(alp)
\r
56 mx2 = SIN(gam) * SIN(bet) * COS(alp) - COS(gam) * SIN(alp)
\r
57 my2 = COS(bet) * COS(alp)
\r
58 mz2 = -COS(gam) * SIN(bet) * COS(alp) - SIN(gam) * SIN(alp)
\r
60 mx3 = -SIN(gam) * COS(bet)
\r
62 mz3 = COS(gam) * COS(bet)
\r