Using AI to improve code readability
authorSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Tue, 10 Sep 2024 17:26:21 +0000 (20:26 +0300)
committerSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Tue, 10 Sep 2024 17:26:21 +0000 (20:26 +0300)
Math/tuletis.bas

index 61c2cb2..5f38c46 100755 (executable)
@@ -1,68 +1,85 @@
-DECLARE SUB init ()\r
-DECLARE SUB pp (x1, y1, x2, y2, c!)\r
-DIM SHARED mul\r
+' Program that computes and plots arbitrary mathematical function on a 2D graph.\r
+' Also it computes and plots the derivative of the function.\r
+' By Svjatoslav Agejenko.\r
+' Email: svjatoslav@svjatoslav.eu\r
+' Homepage: http://www.svjatoslav.eu\r
+'\r
+' Changelog:\r
+' 200?, Initial version\r
+' 2024.09, Improved program readability using AI\r
 \r
-mul = 50        '<< scale\r
-init\r
 \r
-ox = -320 / mul\r
-oy = 0\r
+DECLARE SUB Initialize ()\r
+DECLARE SUB PlotPoint (x, y, x1, y1, c!)\r
+DIM SHARED scaleFactor\r
 \r
-FOR x = -320 / mul TO 320 / mul STEP 1 / mul\r
+scaleFactor = 50        ' Scale factor for the graph\r
+Initialize\r
 \r
+oldX = -320 / scaleFactor\r
+oldY = 0\r
 \r
-t = x ^ 3 - (3 * x)     '<< Type your formula there\r
+FOR x = -320 / scaleFactor TO 320 / scaleFactor STEP 1 / scaleFactor\r
 \r
+    ' Calculate the function value (replace with your desired formula)\r
+    t = x ^ 3 - (3 * x)\r
 \r
-pp x, t, ox, tol, 10\r
-y = (t - tol) * mul\r
-tol = t\r
+    PlotPoint x, t, oldX, prevY, 10\r
+    y = (t - prevY) * scaleFactor\r
+    prevY = t\r
 \r
-pp x, y, ox, oy, 14\r
-ox = x\r
-oy = y\r
+    PlotPoint x, y, oldX, oldY, 14\r
+    oldX = x\r
+    oldY = y\r
 NEXT x\r
 \r
-SUB init\r
-SCREEN 12\r
+SUB Initialize\r
+    SCREEN 12\r
 \r
-FOR x = -320 TO 320\r
-IF x / mul = x \ mul THEN LINE (x + 320, 0)-(x + 320, 479), 1\r
-NEXT x\r
+    ' Draw vertical grid lines\r
+    FOR x = -320 TO 320\r
+        IF x / scaleFactor = x \ scaleFactor THEN LINE (x + 320, 0)-(x + 320, 479), 1\r
+    NEXT x\r
 \r
-FOR y = -240 TO 240\r
-IF y / mul = y \ mul THEN LINE (0, y + 240)-(639, y + 240), 1\r
-NEXT y\r
+    ' Draw horizontal grid lines\r
+    FOR y = -240 TO 240\r
+        IF y / scaleFactor = y \ scaleFactor THEN LINE (0, y + 240)-(639, y + 240), 1\r
+    NEXT y\r
 \r
-FOR x = -320 TO 320\r
-IF x / (mul * 5) = x \ (mul * 5) THEN LINE (x + 320, 0)-(x + 320, 479), 4\r
-NEXT x\r
+    ' Draw thicker vertical grid lines for every 5th unit\r
+    FOR x = -320 TO 320\r
+        IF x / (scaleFactor * 5) = x \ (scaleFactor * 5) THEN LINE (x + 320, 0)-(x + 320, 479), 4\r
+    NEXT x\r
 \r
-FOR y = -240 TO 240\r
-IF y / (mul * 5) = y \ (mul * 5) THEN LINE (0, y + 240)-(639, y + 240), 4\r
-NEXT y\r
+    ' Draw thicker horizontal grid lines for every 5th unit\r
+    FOR y = -240 TO 240\r
+        IF y / (scaleFactor * 5) = y \ (scaleFactor * 5) THEN LINE (0, y + 240)-(639, y + 240), 4\r
+    NEXT y\r
 \r
+    ' Draw x-axis and y-axis\r
+    LINE (0, 240)-(639, 240), 3\r
+    LINE (320, 0)-(320, 479), 3\r
+END SUB\r
 \r
+SUB PlotPoint (x, y, x1, y1, c)\r
 \r
-LINE (0, 240)-(639, 240), 3\r
-LINE (320, 0)-(320, 479), 3\r
-END SUB\r
+    x2 = (x * scaleFactor) + 320\r
+    y2 = 240 - (y * scaleFactor)\r
+    x3 = (x1 * scaleFactor) + 320\r
+    y3 = 240 - (y1 * scaleFactor)\r
 \r
-SUB pp (x, y, x1, y1, c)\r
-\r
-x2 = (x * mul) + 320\r
-y2 = 240 - (y * mul)\r
-x3 = (x1 * mul) + 320\r
-y3 = 240 - (y1 * mul)\r
-IF x2 < 0 THEN GOTO 1\r
-IF y2 < 0 THEN GOTO 1\r
-IF x2 > 639 THEN GOTO 1\r
-IF y2 > 479 THEN GOTO 1\r
-IF x3 < 0 THEN GOTO 1\r
-IF y3 < 0 THEN GOTO 1\r
-IF x3 > 639 THEN GOTO 1\r
-IF y3 > 479 THEN GOTO 1\r
-LINE (x2, y2)-(x3, y3), c\r
-1\r
-END SUB\r
+    ' Check if the points are within the screen boundaries\r
+    IF x2 < 0 THEN GOTO Skip\r
+    IF y2 < 0 THEN GOTO Skip\r
+    IF x2 > 639 THEN GOTO Skip\r
+    IF y2 > 479 THEN GOTO Skip\r
+    IF x3 < 0 THEN GOTO Skip\r
+    IF y3 < 0 THEN GOTO Skip\r
+    IF x3 > 639 THEN GOTO Skip\r
+    IF y3 > 479 THEN GOTO Skip\r
+\r
+    ' Draw a line between the two points with the specified color\r
+    LINE (x2, y2)-(x3, y3), c\r
 \r
+Skip:\r
+END SUB\r