Using AI to improve code readability
authorSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Fri, 16 Aug 2024 21:28:46 +0000 (00:28 +0300)
committerSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Fri, 16 Aug 2024 21:28:46 +0000 (00:28 +0300)
Graphics/Spirals/spiral7.bas

index 3e14472..f820839 100644 (file)
@@ -1,65 +1,88 @@
-' Spiral\r
-' made by Svjatoslav Agejenko\r
-' in 2003.12\r
-' H-Page: svjatoslav.eu\r
-' E-Mail: svjatoslav@svjatoslav.eu\r
\r
-DIM SHARED torux(1 TO 10000)\r
-DIM SHARED toruy(1 TO 10000)\r
-DIM SHARED tor\r
+' Program to render fancy looking spiral.\r
+' By Svjatoslav Agejenko.\r
+' Email: svjatoslav@svjatoslav.eu\r
+' Homepage: http://www.svjatoslav.eu\r
+'\r
+' Changelog:\r
+' 2003.12, Initial version\r
+' 2024.08, Improved program readability using AI\r
+\r
+' Declare shared arrays to hold the x and y coordinates of the spiral\r
+DIM SHARED spiralX(1 TO 10000)\r
+DIM SHARED spiralY(1 TO 10000)\r
+\r
+' Initialize the screen to a graphics mode with 640x480 resolution and 16 colors\r
 SCREEN 12\r
-su = 200\r
-tor = 0\r
-FOR a = 0 TO 97.35 STEP .15\r
-tor = tor + 1\r
-su = SIN(a / 31) * 100\r
-x = SIN(a) * su * 3 + 320\r
-y = COS(a) * su + 250\r
-y = y - (COS(a / 31) * 200)\r
-torux(tor) = x\r
-toruy(tor) = y\r
-PSET (x, y), 15\r
-NEXT a\r
 \r
-FOR a = 97.35 TO 0 STEP -.15\r
-tor = tor + 1\r
-su = SIN(a / 31) * 50\r
-x = SIN(a) * su * 3 + 320\r
-y = COS(a) * su + 350\r
-y = y - (COS(a / 31) * 100)\r
-torux(tor) = x\r
-toruy(tor) = y\r
-PSET (x, y), 15\r
-NEXT a\r
+' Constants for the initial size and the starting value of the index\r
+CONST InitialSize = 100\r
+CONST StartIndex = 0\r
+\r
+' Variable to keep track of the current position in the spiral arrays\r
+DIM torusIndex AS DOUBLE\r
+torusIndex = StartIndex\r
+\r
+' Loop parameters\r
+DIM angle AS DOUBLE\r
+DIM scaleFactor AS DOUBLE\r
+\r
+' Generate the first arm of the spiral\r
+FOR angle = 0 TO 97.35 STEP .15\r
+    torusIndex = torusIndex + 1\r
+    scaleFactor = SIN(angle / 31) * InitialSize\r
+    spiralX(torusIndex) = SIN(angle) * scaleFactor * 3 + 320\r
+    spiralY(torusIndex) = COS(angle) * scaleFactor + 250\r
+    spiralY(torusIndex) = spiralY(torusIndex) - (COS(angle / 31) * 200)\r
+    PSET (spiralX(torusIndex), spiralY(torusIndex)), 15\r
+NEXT angle\r
+\r
+' Generate the second arm of the spiral\r
+FOR angle = 97.35 TO 0 STEP -.15\r
+    torusIndex = torusIndex + 1\r
+    scaleFactor = SIN(angle / 31) * (InitialSize / 2)\r
+    spiralX(torusIndex) = SIN(angle) * scaleFactor * 3 + 320\r
+    spiralY(torusIndex) = COS(angle) * scaleFactor + 350\r
+    spiralY(torusIndex) = spiralY(torusIndex) - (COS(angle / 31) * 100)\r
+    PSET (spiralX(torusIndex), spiralY(torusIndex)), 15\r
+NEXT angle\r
 \r
-FOR a = 0 TO 97.35 STEP .15\r
-tor = tor + 1\r
-su = SIN(a / 31) * 25\r
-x = SIN(a) * su * 3 + 320\r
-y = COS(a) * su + 300\r
-y = y - (COS(a / 31) * 50)\r
-torux(tor) = x\r
-toruy(tor) = y\r
-PSET (x, y), 15\r
-NEXT a\r
+' Generate the third arm of the spiral\r
+FOR angle = 0 TO 97.35 STEP .15\r
+    torusIndex = torusIndex + 1\r
+    scaleFactor = SIN(angle / 31) * (InitialSize / 4)\r
+    spiralX(torusIndex) = SIN(angle) * scaleFactor * 3 + 320\r
+    spiralY(torusIndex) = COS(angle) * scaleFactor + 300\r
+    spiralY(torusIndex) = spiralY(torusIndex) - (COS(angle / 31) * 50)\r
+    PSET (spiralX(torusIndex), spiralY(torusIndex)), 15\r
+NEXT angle\r
 \r
-FOR a = 97.35 TO 0 STEP -.15\r
-tor = tor + 1\r
-su = SIN(a / 31) * 12.5\r
-x = SIN(a) * su * 3 + 320\r
-y = COS(a) * su + 325\r
-y = y - (COS(a / 31) * 25)\r
-torux(tor) = x\r
-toruy(tor) = y\r
-PSET (x, y), 15\r
-NEXT a\r
+' Generate the fourth arm of the spiral\r
+FOR angle = 97.35 TO 0 STEP -.15\r
+    torusIndex = torusIndex + 1\r
+    scaleFactor = SIN(angle / 31) * (InitialSize / 8)\r
+    spiralX(torusIndex) = SIN(angle) * scaleFactor * 3 + 320\r
+    spiralY(torusIndex) = COS(angle) * scaleFactor + 325\r
+    spiralY(torusIndex) = spiralY(torusIndex) - (COS(angle / 31) * 25)\r
+    PSET (spiralX(torusIndex), spiralY(torusIndex)), 15\r
+NEXT angle\r
 \r
-zzx = (tor - 42) / 4\r
+' Calculate the number of lines to draw based on the current index\r
+DIM totalSegments AS DOUBLE\r
+totalSegments = (torusIndex - 42) / 4\r
+\r
+a$ = INPUT$(1)\r
+' Clear the screen before drawing the lines\r
 CLS\r
-FOR a = 1 TO zzx * 4\r
-LINE (torux(a), toruy(a))-(torux(a + 42), toruy(a + 42)), 15\r
-LINE (torux(a), toruy(a))-(torux(a + 1), toruy(a + 1)), 15\r
-NEXT a\r
+\r
+' Draw the lines between points in the spiral\r
+FOR angle = 1 TO totalSegments * 4\r
+    LINE (spiralX(angle), spiralY(angle))-(spiralX(angle + 42), spiralY(angle + 42)), 15\r
+    LINE (spiralX(angle), spiralY(angle))-(spiralX(angle + 1), spiralY(angle + 1)), 15\r
+NEXT angle\r
+\r
+' Wait for the user to press a key before exiting\r
 a$ = INPUT$(1)\r
+\r
+' End of program\r
 SYSTEM\r
 \r