Code formatting. Added delay to slow animation on too fast computers.
authorSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Sun, 10 Mar 2024 18:22:21 +0000 (20:22 +0200)
committerSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Sun, 10 Mar 2024 18:22:21 +0000 (20:22 +0200)
graphics/3D/!.bas

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