Using AI to improve code readability
authorSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Sun, 25 Aug 2024 10:42:37 +0000 (13:42 +0300)
committerSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Sun, 25 Aug 2024 10:42:37 +0000 (13:42 +0300)
Graphics/bumpmap.bas
Graphics/fract.bas
Graphics/fract2.bas

index e947549..aa4f296 100755 (executable)
@@ -1,10 +1,21 @@
+' Program render bump-map animation.\r
+' By Svjatoslav Agejenko.\r
+' Email: svjatoslav@svjatoslav.eu\r
+' Homepage: http://www.svjatoslav.eu\r
+'\r
+' Changelog:\r
+' ?, Initial version\r
+' 2024.08, Improved program readability using AI\r
+\r
+\r
 DECLARE SUB makeSurface ()\r
 DECLARE SUB animate ()\r
 DECLARE SUB makeDot (x!, y!)\r
 DECLARE SUB paintImage ()\r
 SCREEN 13\r
 \r
-DIM SHARED imgh(0 TO 50, 0 TO 50)\r
+' surface height map\r
+DIM SHARED imgHeight(0 TO 50, 0 TO 50)\r
 \r
 PAINT (0, 0), 1\r
 \r
@@ -14,86 +25,83 @@ animate
 \r
 SUB animate\r
 \r
-frm = 0\r
+    frame = 0\r
 1\r
-frm = frm + 5\r
-lx = SIN(frm / 100) * 20 + 25\r
-ly = SIN(frm / 71.32) * 20 + 25\r
-lx = lx + SIN(frm / 34) * 10\r
-ly = ly + SIN(frm / 45) * 10\r
-\r
-\r
-FOR y = 2 TO 48\r
-  FOR x = 2 TO 48\r
-    d = SQR((x - lx) ^ 2 + (y - ly) ^ 2)\r
-    b = (30 - d) / 4\r
-  \r
-    v = imgh(x - 1, y) - imgh(x, y)\r
-    bpx = (lx - x) * v\r
-   \r
-    v = imgh(x, y - 1) - imgh(x, y)\r
-    bpy = (ly - y) * v\r
-   \r
-    b = b + (bpx + bpy) / (d / 2)\r
-\r
-    IF b < 0 THEN b = 0\r
-    IF b > 15 THEN b = 15\r
-    PSET (x + 150, y), 16 + b\r
-  NEXT x\r
-NEXT y\r
-\r
-CIRCLE (lx + 150, ly), 2, 12\r
+    frame = frame + 5\r
+    lightX = SIN(frame / 100) * 20 + 25\r
+    lightY = SIN(frame / 71.32) * 20 + 25\r
+    lightX = lightX + SIN(frame / 34) * 10\r
+    lightY = lightY + SIN(frame / 45) * 10\r
 \r
+    FOR y = 2 TO 48\r
+        FOR x = 2 TO 48\r
+            distance = SQR((x - lightX) ^ 2 + (y - lightY) ^ 2)\r
+            brightness = (30 - distance) / 4\r
 \r
-GOTO 1\r
+            value = imgHeight(x - 1, y) - imgHeight(x, y)\r
+            brightnessX = (lightX - x) * value\r
+\r
+            value = imgHeight(x, y - 1) - imgHeight(x, y)\r
+            brightnessY = (lightY - y) * value\r
+\r
+            brightness = brightness + (brightnessX + brightnessY) / (distance / 2)\r
 \r
+            IF brightness < 0 THEN brightness = 0\r
+            IF brightness > 15 THEN brightness = 15\r
+            PSET (x + 150, y), 16 + brightness\r
+        NEXT x\r
+    NEXT y\r
+\r
+    CIRCLE (lightX + 150, lightY), 2, 12\r
+\r
+GOTO 1\r
 \r
 END SUB\r
 \r
 SUB makeDot (x, y)\r
 \r
-FOR x1 = -10 TO 10\r
-  FOR y1 = -10 TO 10\r
-    dist = SQR(x1 * x1 + y1 * y1)\r
-    p = 4 - dist\r
-    IF p < 0 THEN p = 0\r
-    imgx = x1 + x\r
-    imgy = y1 + y\r
-    IF imgx < 0 THEN imgx = 0\r
-    IF imgy < 0 THEN imgy = 0\r
-    IF imgx > 50 THEN imgx = 50\r
-    IF imgy > 50 THEN imgy = 50\r
-    imgh(imgx, imgy) = imgh(imgx, imgy) + p\r
-\r
\r
-  NEXT y1\r
-NEXT x1\r
+    FOR x1 = -10 TO 10\r
+        FOR y1 = -10 TO 10\r
+            dist = SQR(x1 * x1 + y1 * y1)\r
+            power = 4 - dist\r
+            IF power < 0 THEN power = 0\r
+            imgX = x1 + x\r
+            imgY = y1 + y\r
+            IF imgX < 0 THEN imgX = 0\r
+            IF imgY < 0 THEN imgY = 0\r
+            IF imgX > 50 THEN imgX = 50\r
+            IF imgY > 50 THEN imgY = 50\r
+            imgHeight(imgX, imgY) = imgHeight(imgX, imgY) + power\r
+\r
+        NEXT y1\r
+    NEXT x1\r
 \r
 END SUB\r
 \r
 SUB makeSurface\r
-FOR x = 0 TO 10\r
-  makeDot RND * 50, RND * 50\r
-NEXT x\r
 \r
-FOR x = 0 TO 45 STEP 2\r
-  makeDot x, x / 2 + 5\r
-NEXT x\r
+    FOR x = 0 TO 10\r
+        CALL makeDot(RND * 50, RND * 50)\r
+    NEXT x\r
+\r
+    FOR x = 0 TO 45 STEP 2\r
+        CALL makeDot(x, x / 2 + 5)\r
+    NEXT x\r
 \r
-FOR x = 5 TO 30 STEP 2\r
-  makeDot x, -x / 1.2 + 30\r
-NEXT x\r
+    FOR x = 5 TO 30 STEP 2\r
+        CALL makeDot(x, -x / 1.2 + 30)\r
+    NEXT x\r
 \r
 END SUB\r
 \r
 SUB paintImage\r
-FOR x = 0 TO 50\r
-  FOR y = 0 TO 50\r
-    c = imgh(x, y) + 16\r
-    PSET (x, y), c\r
-  NEXT y\r
-NEXT x\r
 \r
+    FOR x = 0 TO 50\r
+        FOR y = 0 TO 50\r
+            clr = imgHeight(x, y) + 16\r
+            PSET (x, y), clr\r
+        NEXT y\r
+    NEXT x\r
 \r
 END SUB\r
 \r
index 2ecb464..b86af44 100755 (executable)
@@ -1,35 +1,42 @@
-' by Svjatoslav Agejenko\r
-' 04.2003\r
+' Animated fractal that is made of size shifting squares.\r
+' By Svjatoslav Agejenko.\r
+' Email: svjatoslav@svjatoslav.eu\r
+' Homepage: http://www.svjatoslav.eu\r
+'\r
+' Changelog:\r
+' 2003.04, Initial version\r
+' 2024.08, Improved program readability using AI\r
 \r
-DECLARE SUB ga (x!, y!, s!)\r
-DIM SHARED depth\r
-DIM SHARED m1, m2, m3, m4\r
+\r
+DECLARE SUB drawFractal (x!, y!, s!)\r
+DIM SHARED recursionDepth\r
+DIM SHARED factor1, factor2, factor3, factor4\r
 SCREEN 7, , , 1\r
 \r
-depth = 1\r
+recursionDepth = 1\r
+\r
 1\r
-frm = frm + 1\r
-m1 = SIN(frm / 19) * 1 + 3\r
-m2 = SIN(frm / 12) * 1 + 3\r
-m3 = SIN(frm / 17) * 1 + 3\r
-m4 = SIN(frm / 22) * 1 + 3\r
+frameCount = frameCount + 1\r
+factor1 = SIN(frameCount / 19) * 1 + 3\r
+factor2 = SIN(frameCount / 12) * 1 + 3\r
+factor3 = SIN(frameCount / 17) * 1 + 3\r
+factor4 = SIN(frameCount / 22) * 1 + 3\r
 PCOPY 0, 1\r
 CLS\r
-ga 160, 100, 40\r
+drawFractal 160, 100, 40\r
 SOUND 0, .4\r
-a$ = INKEY$\r
-IF a$ <> "" THEN SYSTEM\r
+userInput$ = INKEY$\r
+IF userInput$ <> "" THEN SYSTEM\r
 GOTO 1\r
 \r
-SUB ga (x, y, s)\r
-IF s > 1 THEN\r
-  depth = depth + 1\r
-  LINE (x - s, y - s)-(x + s, y + s), depth, BF\r
-  ga x - s, y - s, s / m1\r
-  ga x + s, y - s, s / m2\r
-  ga x + s, y + s, s / m3\r
-  ga x - s, y + s, s / m4\r
-  depth = depth - 1\r
-END IF\r
+SUB drawFractal (x, y, s)\r
+    IF s > 1 THEN\r
+        recursionDepth = recursionDepth + 1\r
+        LINE (x - s, y - s)-(x + s, y + s), recursionDepth, BF\r
+        drawFractal x - s, y - s, s / factor1\r
+        drawFractal x + s, y - s, s / factor2\r
+        drawFractal x + s, y + s, s / factor3\r
+        drawFractal x - s, y + s, s / factor4\r
+        recursionDepth = recursionDepth - 1\r
+    END IF\r
 END SUB\r
-\r
index 6feb3e9..be2373e 100755 (executable)
@@ -1,44 +1,52 @@
-' by Svjatoslav Agejenko\r
-' 04.2003\r
-\r
-DECLARE SUB ga (x!, y!, s!)\r
-DIM SHARED m1, m2, m3\r
-DIM SHARED v11, v12\r
-DIM SHARED v21, v22\r
-DIM SHARED v31, v32\r
+' Animated tree fractal.\r
+' By Svjatoslav Agejenko.\r
+' Email: svjatoslav@svjatoslav.eu\r
+' Homepage: http://www.svjatoslav.eu\r
+'\r
+' Changelog:\r
+' 2003.04, Initial version\r
+' 2024.08, Improved program readability using AI\r
+\r
+DECLARE SUB generateFractal (x!, y!, s!)\r
+\r
+DECLARE SUB generateArt (x!, y!, s!)\r
+DIM SHARED modifier1, modifier2, modifier3\r
+DIM SHARED vector1X, vector1Y\r
+DIM SHARED vector2X, vector2Y\r
+DIM SHARED vector3X, vector3Y\r
 SCREEN 7, , , 1\r
 \r
 1\r
-frm = frm + 1\r
-m1 = SIN(frm / 19) + 3\r
-m2 = SIN(frm / 12) + 3\r
-m3 = SIN(frm / 17) + 3\r
+frame = frame + 1\r
+modifier1 = SIN(frame / 19) + 3\r
+modifier2 = SIN(frame / 12) + 3\r
+modifier3 = SIN(frame / 17) + 3\r
 \r
-v11 = SIN(frm / 13) / 3 + 1\r
-v12 = SIN(frm / 18) / 3 + 1\r
+vector1X = SIN(frame / 13) / 3 + 1\r
+vector1Y = SIN(frame / 18) / 3 + 1\r
 \r
-v21 = SIN(frm / 20) / 3 + 1\r
-v22 = SIN(frm / 28) / 3 + 1\r
+vector2X = SIN(frame / 20) / 3 + 1\r
+vector2Y = SIN(frame / 28) / 3 + 1\r
 \r
-v31 = SIN(frm / 31) / 3 + 1\r
-v32 = SIN(frm / 24) / 3 + 1\r
+vector3X = SIN(frame / 31) / 3 + 1\r
+vector3Y = SIN(frame / 24) / 3 + 1\r
 \r
 PCOPY 0, 1\r
 CLS\r
-ga 160, 180, 80\r
+generateFractal 160, 180, 80\r
 SOUND 0, .5\r
-a$ = INKEY$\r
-IF a$ <> "" THEN SYSTEM\r
+inputKey$ = INKEY$\r
+IF inputKey$ <> "" THEN SYSTEM\r
 GOTO 1\r
 \r
-SUB ga (x, y, s)\r
-IF s > 1 THEN\r
-  LINE (x, y)-(x - s * v11, y - s * v12), 15\r
-  LINE (x, y)-(x + s * v21, y - s * v22), 15\r
-  LINE (x, y)-(x, y - s), 15\r
-  ga x - s * v11, y - s * v12, s / m1\r
-  ga x + s * v21, y - s * v22, s / m2\r
-  ga x, y - s, s / m3\r
-END IF\r
+SUB generateFractal (x, y, s)\r
+    IF s > 1 THEN\r
+        LINE (x, y)-(x - s * vector1X, y - s * vector1Y), 15\r
+        LINE (x, y)-(x + s * vector2X, y - s * vector2Y), 15\r
+        LINE (x, y)-(x, y - s), 15\r
+        generateFractal x - s * vector1X, y - s * vector1Y, s / modifier1\r
+        generateFractal x + s * vector2X, y - s * vector2Y, s / modifier2\r
+        generateFractal x, y - s, s / modifier3\r
+    END IF\r
 END SUB\r
 \r