From 6999e5bf3e99ddaa9d34d748078068dcfcd8a565 Mon Sep 17 00:00:00 2001 From: Svjatoslav Agejenko Date: Sun, 10 Mar 2024 20:22:21 +0200 Subject: [PATCH] Code formatting. Added delay to slow animation on too fast computers. --- graphics/3D/!.bas | 452 +++++++++++++++++++++++----------------------- 1 file changed, 227 insertions(+), 225 deletions(-) diff --git a/graphics/3D/!.bas b/graphics/3D/!.bas index ad670ef..cdd9a9a 100755 --- a/graphics/3D/!.bas +++ b/graphics/3D/!.bas @@ -8,19 +8,19 @@ DECLARE SUB getcor () DECLARE SUB mulcor () DECLARE SUB nait3d () DECLARE SUB calcsin () -DEFINT A-Z -DIM SHARED Xn(100), Yn(100), Zn(100) -DIM SHARED Xs1(100), Ys1(100), Xe1(100), Ye1(100) -DIM SHARED x(100), y(100), z(100), pointers1(100), pointers2(100) -DIM SHARED Cosine&(360), Sine&(360) -DIM SHARED np, nl -DIM SHARED jrp, jrl +DefInt A-Z +Dim Shared Xn(100), Yn(100), Zn(100) +Dim Shared Xs1(100), Ys1(100), Xe1(100), Ye1(100) +Dim Shared x(100), y(100), z(100), pointers1(100), pointers2(100) +Dim Shared Cosine&(360), Sine&(360) +Dim Shared np, nl +Dim Shared jrp, jrl jrp = 0 jrl = 0 -SCREEN 12 -CLS +Screen 12 +Cls calcsin @@ -31,235 +31,237 @@ nait3d -DATA 5, -60, -10 -DATA 15,-50, -10 -DATA 15, 0, -10 -DATA 5, 10, -10 -DATA -5, 10, -10 -DATA -15, 0, -10 -DATA -15,-50, -10 -DATA -5, -60, -10 - -DATA 5, -60, 10 -DATA 15,-50, 10 -DATA 15, 0, 10 -DATA 5, 10, 10 -DATA -5, 10, 10 -DATA -15, 0, 10 -DATA -15,-50, 10 -DATA -5, -60, 10 - -DATA 5, 20, 10 -DATA 15, 30, 10 -DATA 15, 40, 10 -DATA 5, 50, 10 -DATA -5, 50, 10 -DATA -15, 40, 10 -DATA -15, 30, 10 -DATA -5, 20, 10 - -DATA 5, 20, -10 -DATA 15, 30, -10 -DATA 15, 40, -10 -DATA 5, 50, -10 -DATA -5, 50, -10 -DATA -15, 40, -10 -DATA -15, 30, -10 -DATA -5, 20, -10 - -DATA 999,999,999 - -DATA 0,1 -DATA 1,2 -DATA 2,3 -DATA 3,4 -DATA 4,5 -DATA 5,6 -DATA 6,7 -DATA 7,0 - -DATA 8,9 -DATA 9,10 -DATA 10,11 -DATA 11,12 -DATA 12,13 -DATA 13,14 -DATA 14,15 -DATA 15,8 - - -DATA 0,8 -DATA 1,9 -DATA 2,10 -DATA 3,11 -DATA 4,12 -DATA 5,13 -DATA 6,14 -DATA 7,15 - -DATA 16,17 -DATA 17,18 -DATA 18,19 -DATA 19,20 -DATA 20,21 -DATA 21,22 -DATA 22,23 -DATA 23,16 - - -DATA 24,25 -DATA 25,26 -DATA 26,27 -DATA 27,28 -DATA 28,29 -DATA 29,30 -DATA 30,31 -DATA 31,24 - -DATA 24,16 -DATA 25,17 -DATA 26,18 -DATA 27,19 -DATA 28,20 -DATA 29,21 -DATA 30,22 -DATA 31,23 - -DATA 999, 999 - -SUB calcsin -FOR a! = 0 TO 359 / 57.29577951# STEP 1 / 57.29577951# - Cosine&(a) = INT(.5 + COS(a!) * 1024) - Sine&(a) = INT(.5 + SIN(a!) * 1024) - a = a + 1 -NEXT -END SUB - -SUB getcor -FOR a = 0 TO 10000 - READ x(a), y(a), z(a) - IF x(a) = 999 THEN x(a) = 0: y(a) = 0: z(a) = 0: GOTO 1 -NEXT -1 -np = a - -FOR a = 0 TO 10000 - READ pointers1(a), pointers2(a) - IF pointers1(a) = 999 THEN GOTO 2 -NEXT -2 -nl = a - -END SUB - -SUB mulcor -suur = 0 -FOR a = 0 TO np -IF ABS(x(a)) > suur THEN suur = ABS(x(a)) -IF ABS(y(a)) > suur THEN suur = ABS(y(a)) -IF ABS(z(a)) > suur THEN suur = ABS(z(a)) -NEXT a -ksuur = 100 / suur - -FOR a = 0 TO np -x(a) = x(a) * ksuur -y(a) = y(a) * ksuur -z(a) = z(a) * ksuur -NEXT a -END SUB - -SUB nait3d - -DO - - Deg1 = Deg1 + d1 - Deg2 = Deg2 + d2 - Deg3 = Deg3 + d3 - - IF Deg1 <= 0 THEN Deg1 = Deg1 + 360 - IF Deg2 <= 0 THEN Deg2 = Deg2 + 360 - IF Deg3 <= 0 THEN Deg3 = Deg3 + 360 - - IF Deg1 >= 360 THEN Deg1 = Deg1 - 360 - IF Deg2 >= 360 THEN Deg2 = Deg2 - 360 - IF Deg3 >= 360 THEN Deg3 = Deg3 - 360 - - C1& = Cosine&(Deg1): S1& = Sine&(Deg1) - C2& = Cosine&(Deg2): S2& = Sine&(Deg2) - C3& = Cosine&(Deg3): S3& = Sine&(Deg3) - -FOR a = 0 TO np - 1 -R = a -Xo = x(R): Yo = y(R): Zo = z(R) - -X1 = (Xo * C1& - Yo * S1&) \ 1024 -Y1 = (Xo * S1& + Yo * C1&) \ 1024 - -X2& = (X1 * C2& - Zo * S2&) \ 1024 -z1 = (X1 * S2& + Zo * C2&) \ 1024 - -Y2& = (Y1 * C3& - z1 * S3&) \ 1024 -z2 = (Y1 * S3& + z1 * C3&) \ 1024 - -z2 = z2 + 300 -Xn(R) = 320 + (X2& / z2 * 500) -Yn(R) = 240 + (Y2& / z2 * 500) -NEXT +Data 5,-60,-10 +Data 15,-50,-10 +Data 15,0,-10 +Data 5,10,-10 +Data -5,10,-10 +Data -15,0,-10 +Data -15,-50,-10 +Data -5,-60,-10 + +Data 5,-60,10 +Data 15,-50,10 +Data 15,0,10 +Data 5,10,10 +Data -5,10,10 +Data -15,0,10 +Data -15,-50,10 +Data -5,-60,10 + +Data 5,20,10 +Data 15,30,10 +Data 15,40,10 +Data 5,50,10 +Data -5,50,10 +Data -15,40,10 +Data -15,30,10 +Data -5,20,10 + +Data 5,20,-10 +Data 15,30,-10 +Data 15,40,-10 +Data 5,50,-10 +Data -5,50,-10 +Data -15,40,-10 +Data -15,30,-10 +Data -5,20,-10 + +Data 999,999,999 + +Data 0,1 +Data 1,2 +Data 2,3 +Data 3,4 +Data 4,5 +Data 5,6 +Data 6,7 +Data 7,0 + +Data 8,9 +Data 9,10 +Data 10,11 +Data 11,12 +Data 12,13 +Data 13,14 +Data 14,15 +Data 15,8 + + +Data 0,8 +Data 1,9 +Data 2,10 +Data 3,11 +Data 4,12 +Data 5,13 +Data 6,14 +Data 7,15 + +Data 16,17 +Data 17,18 +Data 18,19 +Data 19,20 +Data 20,21 +Data 21,22 +Data 22,23 +Data 23,16 + + +Data 24,25 +Data 25,26 +Data 26,27 +Data 27,28 +Data 28,29 +Data 29,30 +Data 30,31 +Data 31,24 + +Data 24,16 +Data 25,17 +Data 26,18 +Data 27,19 +Data 28,20 +Data 29,21 +Data 30,22 +Data 31,23 + +Data 999,999 + +Sub calcsin + For a! = 0 To 359 / 57.29577951# Step 1 / 57.29577951# + Cosine&(a) = Int(.5 + Cos(a!) * 1024) + Sine&(a) = Int(.5 + Sin(a!) * 1024) + a = a + 1 + Next +End Sub + +Sub getcor + For a = 0 To 10000 + Read x(a), y(a), z(a) + If x(a) = 999 Then x(a) = 0: y(a) = 0: z(a) = 0: GoTo 1 + Next + 1 + np = a + + For a = 0 To 10000 + Read pointers1(a), pointers2(a) + If pointers1(a) = 999 Then GoTo 2 + Next + 2 + nl = a + +End Sub + +Sub mulcor + suur = 0 + For a = 0 To np + If Abs(x(a)) > suur Then suur = Abs(x(a)) + If Abs(y(a)) > suur Then suur = Abs(y(a)) + If Abs(z(a)) > suur Then suur = Abs(z(a)) + Next a + ksuur = 100 / suur + + For a = 0 To np + x(a) = x(a) * ksuur + y(a) = y(a) * ksuur + z(a) = z(a) * ksuur + Next a +End Sub + +Sub nait3d + + Do + + Deg1 = Deg1 + d1 + Deg2 = Deg2 + d2 + Deg3 = Deg3 + d3 + + sound 0,1 + + If Deg1 <= 0 Then Deg1 = Deg1 + 360 + If Deg2 <= 0 Then Deg2 = Deg2 + 360 + If Deg3 <= 0 Then Deg3 = Deg3 + 360 + + If Deg1 >= 360 Then Deg1 = Deg1 - 360 + If Deg2 >= 360 Then Deg2 = Deg2 - 360 + If Deg3 >= 360 Then Deg3 = Deg3 - 360 + + C1& = Cosine&(Deg1): S1& = Sine&(Deg1) + C2& = Cosine&(Deg2): S2& = Sine&(Deg2) + C3& = Cosine&(Deg3): S3& = Sine&(Deg3) + + For a = 0 To np - 1 + R = a + Xo = x(R): Yo = y(R): Zo = z(R) + + X1 = (Xo * C1& - Yo * S1&) \ 1024 + Y1 = (Xo * S1& + Yo * C1&) \ 1024 + + X2& = (X1 * C2& - Zo * S2&) \ 1024 + z1 = (X1 * S2& + Zo * C2&) \ 1024 + + Y2& = (Y1 * C3& - z1 * S3&) \ 1024 + z2 = (Y1 * S3& + z1 * C3&) \ 1024 + + z2 = z2 + 300 + Xn(R) = 320 + (X2& / z2 * 500) + Yn(R) = 240 + (Y2& / z2 * 500) + Next -FOR a1 = 0 TO nl - 1 -F1 = pointers1(a1) -S1 = pointers2(a1) - -Xn = Xn(F1) -Yn = Yn(F1) - -X1 = Xn(S1) -Y1 = Yn(S1) - -LINE (Xs1(a1), Ys1(a1))-(Xe1(a1), Ye1(a1)), 0 -LINE (X1, Y1)-(Xn, Yn), 15 - + For a1 = 0 To nl - 1 + F1 = pointers1(a1) + S1 = pointers2(a1) -Xs1(a1) = X1: Ys1(a1) = Y1 -Xe1(a1) = Xn: Ye1(a1) = Yn -NEXT - + Xn = Xn(F1) + Yn = Yn(F1) -K$ = INKEY$ -IF K$ <> "" THEN + X1 = Xn(S1) + Y1 = Yn(S1) -SELECT CASE K$ + Line (Xs1(a1), Ys1(a1))-(Xe1(a1), Ye1(a1)), 0 + Line (X1, Y1)-(Xn, Yn), 15 -CASE CHR$(0) + CHR$(72) -d1 = d1 + 1 -CASE CHR$(0) + CHR$(80) -d1 = d1 - 1 + Xs1(a1) = X1: Ys1(a1) = Y1 + Xe1(a1) = Xn: Ye1(a1) = Yn + Next -CASE CHR$(0) + CHR$(75) -d2 = d2 - 1 -CASE CHR$(0) + CHR$(77) -d2 = d2 + 1 + K$ = InKey$ + If K$ <> "" Then -CASE "w" -d3 = d3 - 1 + Select Case K$ -CASE "z" -d3 = d3 + 1 + Case Chr$(0) + Chr$(72) + d1 = d1 + 1 -CASE " " -d1 = d1 / 2 -d2 = d2 / 2 -d3 = d3 / 2 + Case Chr$(0) + Chr$(80) + d1 = d1 - 1 -CASE CHR$(27) -SYSTEM + Case Chr$(0) + Chr$(75) + d2 = d2 - 1 -END SELECT -END IF + Case Chr$(0) + Chr$(77) + d2 = d2 + 1 -LOOP -END SUB + Case "w" + d3 = d3 - 1 + + Case "z" + d3 = d3 + 1 + + Case " " + d1 = d1 / 2 + d2 = d2 / 2 + d3 = d3 / 2 + + Case Chr$(27) + System + + End Select + End If + + Loop +End Sub -- 2.20.1