DECLARE SUB ruut2 (x!, y!, z!, s!) DECLARE SUB ruut (x!, y!, z!, s!) DECLARE SUB kuus (x, y, z, s) DECLARE SUB porand () DECLARE SUB addp (x, y, z) ' kursor keys and to z, w - rotate ' - speed down ' q - quit DECLARE SUB start () DECLARE SUB addsq (x1%, y1%, z1%) DECLARE SUB getcor () DECLARE SUB mulcor () DECLARE SUB nait3d () DECLARE SUB calcsin () DIM SHARED xn(4000), yn(4000), zn(4000) DIM SHARED x(4000), y(4000), z(4000) DIM SHARED xo(4000), yo(4000), zo(4000) DIM SHARED point1(4000), point2(4000) DIM SHARED col(4000) DIM SHARED nump, numl DIM SHARED myx, myy, myz, mye, myk myx = 0 myy = 0 myz = -1000 start nait3d SUB addp (x, y, z) c = 1 xn(nump + 1) = -100 + x yn(nump + 1) = y zn(nump + 1) = -100 + z xn(nump + 2) = 100 + x yn(nump + 2) = y zn(nump + 2) = -100 + z xn(nump + 3) = 100 + x yn(nump + 3) = y zn(nump + 3) = 100 + z xn(nump + 4) = -100 + x yn(nump + 4) = y zn(nump + 4) = 100 + z point1(numl + 1) = nump + 1 point2(numl + 1) = nump + 2 col(numl + 1) = c point1(numl + 2) = nump + 2 point2(numl + 2) = nump + 3 col(numl + 2) = c point1(numl + 3) = nump + 3 point2(numl + 3) = nump + 4 col(numl + 3) = c point1(numl + 4) = nump + 4 point2(numl + 4) = nump + 1 col(numl + 4) = c nump = nump + 4 numl = numl + 4 END SUB SUB getcor xn(nump + 1) = -150 yn(nump + 1) = -125 zn(nump + 1) = -200 xn(nump + 2) = 150 yn(nump + 2) = -125 zn(nump + 2) = -200 xn(nump + 3) = 150 yn(nump + 3) = 125 zn(nump + 3) = -200 xn(nump + 4) = -150 yn(nump + 4) = 125 zn(nump + 4) = -200 xn(nump + 5) = -150 yn(nump + 5) = -125 zn(nump + 5) = 200 xn(nump + 6) = 150 yn(nump + 6) = -125 zn(nump + 6) = 200 xn(nump + 7) = 150 yn(nump + 7) = 125 zn(nump + 7) = 200 xn(nump + 8) = -150 yn(nump + 8) = 125 zn(nump + 8) = 200 point1(numl + 1) = nump + 1 point2(numl + 1) = nump + 2 point1(numl + 2) = nump + 2 point2(numl + 2) = nump + 3 point1(numl + 3) = nump + 3 point2(numl + 3) = nump + 4 point1(numl + 4) = nump + 4 point2(numl + 4) = nump + 1 point1(numl + 5) = nump + 5 point2(numl + 5) = nump + 6 point1(numl + 6) = nump + 6 point2(numl + 6) = nump + 7 point1(numl + 7) = nump + 7 point2(numl + 7) = nump + 8 point1(numl + 8) = nump + 8 point2(numl + 8) = nump + 5 point1(numl + 9) = nump + 5 point2(numl + 9) = nump + 1 point1(numl + 10) = nump + 6 point2(numl + 10) = nump + 2 point1(numl + 11) = nump + 7 point2(numl + 11) = nump + 3 point1(numl + 12) = nump + 8 point2(numl + 12) = nump + 4 nump = nump + 8 numl = numl + 12 xn(nump + 1) = -150 yn(nump + 1) = -125 + 201 zn(nump + 1) = 0 xn(nump + 2) = -150 yn(nump + 2) = -125 + 201 zn(nump + 2) = 89 xn(nump + 3) = -150 yn(nump + 3) = -125 zn(nump + 3) = 89 xn(nump + 4) = -150 yn(nump + 4) = -125 zn(nump + 4) = 0 point1(numl + 1) = nump + 1 point2(numl + 1) = nump + 2 point1(numl + 2) = nump + 2 point2(numl + 2) = nump + 3 point1(numl + 3) = nump + 3 point2(numl + 3) = nump + 4 point1(numl + 4) = nump + 4 point2(numl + 4) = nump + 1 nump = nump + 4 numl = numl + 4 FOR x = -1000 TO 1000 STEP 250 FOR z = -1000 TO 1000 STEP 250 'addp x, -200, z 'addp x, 200, z NEXT z NEXT x porand END SUB SUB kuus (x, y, z, s) b = 0 f = .3925 FOR a = 0 + f TO 6 + f STEP 6.28 / 8 x1 = SIN(a) * s y1 = COS(a) * s b = b + 1 xn(nump + b) = x1 + x yn(nump + b) = y zn(nump + b) = y1 + z NEXT a point1(numl + 1) = nump + 1 point2(numl + 1) = nump + 2 col(numl + 1) = 12 point1(numl + 2) = nump + 2 point2(numl + 2) = nump + 3 col(numl + 2) = 12 point1(numl + 3) = nump + 3 point2(numl + 3) = nump + 4 col(numl + 3) = 12 point1(numl + 4) = nump + 4 point2(numl + 4) = nump + 5 col(numl + 4) = 12 point1(numl + 5) = nump + 5 point2(numl + 5) = nump + 6 col(numl + 5) = 12 point1(numl + 6) = nump + 6 point2(numl + 6) = nump + 7 col(numl + 6) = 12 point1(numl + 7) = nump + 7 point2(numl + 7) = nump + 8 col(numl + 7) = 12 point1(numl + 8) = nump + 8 point2(numl + 8) = nump + 1 col(numl + 8) = 12 nump = nump + b numl = numl + 8 'LOCATE 1, 1 'PRINT b END SUB SUB nait3d 1 myx = myx + SIN(deg1) * mye myz = myz + COS(deg1) * mye myx = myx + COS(deg1) * myk myz = myz - SIN(deg1) * myk deg1 = deg1 + d1 Deg2 = Deg2 + d2 C1 = COS(deg1): S1 = SIN(deg1) C2 = COS(Deg2): S2 = SIN(Deg2) FOR a = 1 TO nump xo = xn(a) - myx yo = -yn(a) - myy zo = zn(a) - myz x1 = (xo * C1 - zo * S1) z1 = (xo * S1 + zo * C1) y1 = (yo * C2 - z1 * S2) z2 = (yo * S2 + z1 * C2) xo(a) = x(a) yo(a) = y(a) IF z2 < 20 THEN x(a) = -1 ELSE x(a) = 320 + (x1 / z2 * 500) y(a) = 240 + (y1 / z2 * 500) END IF NEXT FOR a = 1 TO numl p1 = point1(a) p2 = point2(a) IF xo(p1) = -1 OR xo(p2) = -1 THEN ELSE LINE (xo(p1), yo(p1))-(xo(p2), yo(p2)), 0 IF x(p1) = -1 OR x(p2) = -1 THEN ELSE LINE (x(p1), y(p1))-(x(p2), y(p2)), col(a) NEXT K$ = INKEY$ IF K$ <> "" THEN SELECT CASE K$ CASE CHR$(0) + "P" mye = mye - 3 CASE CHR$(0) + "H" mye = mye + 3 CASE CHR$(0) + "M" myk = myk + 3 CASE CHR$(0) + "K" myk = myk - 3 CASE "+" myy = myy + 3 CASE "-" myy = myy - 3 CASE "6" d1 = d1 + .01 CASE "4" d1 = d1 - .01 CASE "8" d2 = d2 - .01 CASE "2" d2 = d2 + .01 CASE " " d1 = d1 / 2 d2 = d2 / 2 d3 = d3 / 2 mye = mye / 2 myk = myk / 2 CASE "q" SYSTEM CASE CHR$(27) SYSTEM END SELECT END IF GOTO 1 END SUB SUB porand FOR x = -100 TO 0 STEP 12.067 + .3 FOR z = -100 TO 0 STEP 12.067 + .3 kuus x, -125, z, 6.53 ruut x + 6.033 + .15, -125, z + 6.033 + .15, 3.111 + .3 NEXT z NEXT x FOR y = -100 TO 0 STEP 20.3 FOR x = -100 TO 0 STEP 20.3 ruut2 x, y, 200, 10 NEXT x NEXT y END SUB SUB ruut (x, y, z, s) xn(nump + 1) = x yn(nump + 1) = y zn(nump + 1) = z + s xn(nump + 2) = x + s yn(nump + 2) = y zn(nump + 2) = z xn(nump + 3) = x yn(nump + 3) = y zn(nump + 3) = z - s xn(nump + 4) = x - s yn(nump + 4) = y zn(nump + 4) = z point1(numl + 1) = nump + 1 point2(numl + 1) = nump + 2 col(numl + 1) = 10 point1(numl + 2) = nump + 2 point2(numl + 2) = nump + 3 col(numl + 2) = 10 point1(numl + 3) = nump + 3 point2(numl + 3) = nump + 4 col(numl + 3) = 10 point1(numl + 4) = nump + 4 point2(numl + 4) = nump + 1 col(numl + 4) = 10 nump = nump + 4 numl = numl + 4 END SUB SUB ruut2 (x, y, z, s) xn(nump + 1) = x - s yn(nump + 1) = y - s zn(nump + 1) = z xn(nump + 2) = x + s yn(nump + 2) = y - s zn(nump + 2) = z xn(nump + 3) = x + s yn(nump + 3) = y + s zn(nump + 3) = z xn(nump + 4) = x - s yn(nump + 4) = y + s zn(nump + 4) = z point1(numl + 1) = nump + 1 point2(numl + 1) = nump + 2 col(numl + 1) = 14 point1(numl + 2) = nump + 2 point2(numl + 2) = nump + 3 col(numl + 2) = 14 point1(numl + 3) = nump + 3 point2(numl + 3) = nump + 4 col(numl + 3) = 14 point1(numl + 4) = nump + 4 point2(numl + 4) = nump + 1 col(numl + 4) = 14 nump = nump + 4 numl = numl + 4 END SUB SUB start SCREEN 12 CLS FOR a = 1 TO 4000 col(a) = 15 NEXT a nump = 0 numl = 0 getcor END SUB