Using AI to improve code readability
authorSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Thu, 15 Aug 2024 11:15:34 +0000 (14:15 +0300)
committerSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Thu, 15 Aug 2024 11:15:34 +0000 (14:15 +0300)
Graphics/Spirals/spiral2.bas
Graphics/Spirals/spiral4.bas
Graphics/Spirals/spiral6.bas

index 6cac232..be7e47f 100644 (file)
@@ -6,7 +6,7 @@ DECLARE SUB DrawLine (startX AS DOUBLE, startY AS DOUBLE, endX AS DOUBLE, endY A
 '\r
 ' Changelog:\r
 ' 2003.12, Initial version\r
-' 2024.08, Imroved program readability using AI\r
+' 2024.08, Improved program readability using AI\r
 \r
 DIM SHARED lineVertexX(1 TO 100) AS DOUBLE\r
 DIM SHARED lineVertexY(1 TO 100) AS DOUBLE\r
index f98bff5..583500c 100644 (file)
@@ -5,7 +5,7 @@
 '\r
 ' Changelog:\r
 ' 2003.12, Initial version\r
-' 2024.08, Imroved program readability using AI\r
+' 2024.08, Improved program readability using AI\r
 \r
 DIM SHARED spiralX(1 TO 10000) AS SINGLE ' X coordinates of the spiral points\r
 DIM SHARED spiralY(1 TO 10000) AS SINGLE ' Y coordinates of the spiral points\r
index d5700ab..9c84465 100644 (file)
@@ -1,50 +1,79 @@
-' 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 sinus1(1 TO 10000)\r
-DIM SHARED sinus2(1 TO 10000)\r
-DIM SHARED tor\r
+' Program to render fancy looking spiral with shaded surface.\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 for storing coordinates and sine values\r
+DIM SHARED spiralX(1 TO 10000)\r
+DIM SHARED spiralY(1 TO 10000)\r
+DIM SHARED sineValue1(1 TO 10000)\r
+DIM SHARED sineValue2(1 TO 10000)\r
+\r
+\r
+' Set the screen mode to 640x480 with 16 colors\r
 SCREEN 12\r
-su = 200\r
-tor = 0\r
-FOR a = 1 TO 150 STEP .05\r
-tor = tor + 1\r
-su = 150 - a\r
-x = SIN(a) * su * 3 + 320\r
-y = COS(a) * su + 300\r
-y = y + (SIN((a + 20) / 10) * (a / 5 + 1))\r
-sinus1(tor) = SIN(a)\r
-sinus2(tor) = SIN((a + 20) / 10)\r
-torux(tor) = x\r
-toruy(tor) = y\r
-PSET (x, y), 15\r
-NEXT a\r
-\r
-FOR a = 1 TO tor - 127\r
-LINE (torux(a), toruy(a))-(torux(a + 126), toruy(a + 126)), 15\r
-\r
-tee = 1\r
-IF sinus1(a) > .8 AND sinus2(a) < sinus2(a + 125) THEN tee = 0\r
-IF sinus1(a) < -.2 AND sinus2(a) - .4 > sinus2(a + 125) THEN tee = 0\r
-IF tee = 1 THEN LINE (torux(a), toruy(a))-(torux(a + 1), toruy(a + 1)), 15\r
-\r
-tee = 0\r
-IF sinus1(a) > .8 AND sinus2(a) > sinus2(a + 125) THEN tee = 1\r
-IF sinus1(a) < -.2 AND sinus2(a) < sinus2(a + 125) THEN tee = 1\r
-IF tee = 1 THEN LINE (torux(a), toruy(a))-(torux(a + 127), toruy(a + 127)), 15\r
-\r
-tee = 0\r
-IF sinus1(a) > .9 AND sinus2(a) > sinus2(a + 125) THEN tee = 1\r
-IF sinus1(a) < -.5 AND sinus2(a) < sinus2(a + 125) THEN tee = 1\r
-IF tee = 1 THEN LINE (torux(a), toruy(a))-(torux(a + 125), toruy(a + 125)), 15\r
-\r
-NEXT a\r
 \r
+' Initialize the spiral rotation parameter\r
+DIM spiralRotation AS SINGLE\r
+spiralRotation = 0\r
+\r
+' Generate and draw the spiral points\r
+FOR angle = 0 TO 150 STEP .05\r
+    spiralRotation = spiralRotation + 1\r
+    scaleFactor = 150 - angle\r
+\r
+    ' Calculate the X and Y coordinates for the current point\r
+    spiralX(spiralRotation) = SIN(angle) * scaleFactor * 3 + 320\r
+    spiralY(spiralRotation) = COS(angle) * scaleFactor + 300\r
+\r
+    ' Apply additional vertical displacement based on a secondary sine function\r
+    spiralY(spiralRotation) = spiralY(spiralRotation) + (SIN((angle + 20) / 10) * (angle / 5 + 1))\r
+\r
+    ' Store the current sine values for later use\r
+    sineValue1(spiralRotation) = SIN(angle)\r
+    sineValue2(spiralRotation) = SIN((angle + 20) / 10)\r
+\r
+    ' Draw the current point on the screen\r
+    PSET (spiralX(spiralRotation), spiralY(spiralRotation)), 15\r
+NEXT angle\r
+\r
+' Connect the points to form a continuous line\r
+FOR index = 1 TO spiralRotation - 127\r
+    ' Draw a line segment between points 126 steps apart\r
+    LINE (spiralX(index), spiralY(index))-(spiralX(index + 126), spiralY(index + 126)), 15\r
+\r
+    ' Initialize the line drawing flag\r
+    DIM drawLine AS INTEGER\r
+    drawLine = 1\r
+\r
+    ' Check conditions to determine if a line segment should be drawn\r
+    IF sineValue1(index) > .8 AND sineValue2(index) < sineValue2(index + 125) THEN drawLine = 0\r
+    IF sineValue1(index) < -.2 AND (sineValue2(index) - .4) > sineValue2(index + 125) THEN drawLine = 0\r
+\r
+    ' Draw a line segment if the conditions are met\r
+    IF drawLine = 1 THEN LINE (spiralX(index), spiralY(index))-(spiralX(index + 1), spiralY(index + 1)), 15\r
+\r
+    ' Reset the line drawing flag and check for different conditions\r
+    drawLine = 0\r
+    IF sineValue1(index) > .8 AND sineValue2(index) > sineValue2(index + 125) THEN drawLine = 1\r
+    IF sineValue1(index) < -.2 AND sineValue2(index) < sineValue2(index + 125) THEN drawLine = 1\r
+\r
+    ' Draw a line segment if the conditions are met\r
+    IF drawLine = 1 THEN LINE (spiralX(index), spiralY(index))-(spiralX(index + 127), spiralY(index + 127)), 15\r
+\r
+    ' Reset the line drawing flag and check for another set of conditions\r
+    drawLine = 0\r
+    IF sineValue1(index) > .9 AND sineValue2(index) > sineValue2(index + 125) THEN drawLine = 1\r
+    IF sineValue1(index) < -.5 AND sineValue2(index) < sineValue2(index + 125) THEN drawLine = 1\r
+\r
+    ' Draw a line segment if the conditions are met\r
+    IF drawLine = 1 THEN LINE (spiralX(index), spiralY(index))-(spiralX(index + 125), spiralY(index + 125)), 15\r
+NEXT index\r
+\r
+' Wait for a key press before exiting\r
 a$ = INPUT$(1)\r
-SYSTEM\r
 \r