Using AI to improve code readability
authorSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Wed, 21 Aug 2024 11:02:36 +0000 (14:02 +0300)
committerSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Wed, 21 Aug 2024 11:02:36 +0000 (14:02 +0300)
Graphics/Animations/water1.bas

index 062af8a..12e5559 100755 (executable)
@@ -1,46 +1,59 @@
-' Wave simulation\r
-' made by Svjatoslav Agejenko\r
-' in 2003.12\r
-' H-Page: svjatoslav.eu\r
-' E-Mail: svjatoslav@svjatoslav.eu\r
\r
-SCREEN 13\r
+' Program simulate wave propagation across 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
-DIM SHARED yh(1 TO 300)\r
-DIM SHARED yhs(1 TO 300)\r
+SCREEN 13\r
 \r
+DIM SHARED yHigh(1 TO 300)      ' surface height\r
+DIM SHARED yVelocity(1 TO 300)  ' surface movement direction and velocity\r
 \r
+' Initialize the arrays\r
 FOR x = 1 TO 300\r
-yhs(x) = 0\r
-yh(x) = 100\r
+    yVelocity(x) = 0\r
+    yHigh(x) = 100\r
 NEXT x\r
 \r
+' Create an initial wave shape\r
 FOR x = 140 TO 160\r
-yh(x) = 150\r
-NEXT x\r
-\r
-\r
-\r
-1\r
-FOR x = 1 TO 300\r
-  LINE (x, 0)-(x, 200 - yh(x)), 0\r
-  LINE (x, 200 - yh(x))-(x, 200), 15\r
-NEXT x\r
-\r
-FOR x = 10 TO 290\r
-  hk = (yh(x - 1) + yh(x + 1) + yh(x + 2) + yh(x - 2)) / 4\r
-  yhs(x) = yhs(x) + (hk - yh(x)) / 5\r
-  yhs(x) = yhs(x) / 1.01\r
+    yHigh(x) = 150\r
 NEXT x\r
 \r
-FOR x = 10 TO 290\r
-  yh(x) = yh(x) + yhs(x)\r
-  yh(x - 1) = yh(x - 1) + yhs(x) / 2\r
-  yh(x + 1) = yh(x + 1) + yhs(x) / 2\r
-NEXT x\r
-\r
-SOUND 0, .5\r
-IF INKEY$ <> "" THEN SYSTEM\r
+' Main simulation loop\r
+1 :\r
+    ' Draw the wave\r
+    FOR x = 1 TO 300\r
+        LINE (x, 0)-(x, 200 - yHigh(x)), 0\r
+        LINE (x, 200 - yHigh(x))-(x, 200), 15\r
+    NEXT x\r
+\r
+    ' Calculate the average height of neighboring points\r
+    FOR x = 10 TO 290\r
+        avgHeight = (yHigh(x - 1) + yHigh(x + 1) + yHigh(x + 2) + yHigh(x - 2)) / 4\r
+        ' Update the smooth wave height\r
+        yVelocity(x) = yVelocity(x) + (avgHeight - yHigh(x)) / 5\r
+        ' Apply a damping factor\r
+        yVelocity(x) = yVelocity(x) / 1.01\r
+    NEXT x\r
+\r
+    ' Update the wave height based on the smooth values\r
+    FOR x = 10 TO 290\r
+        yHigh(x) = yHigh(x) + yVelocity(x)\r
+        ' Apply smoothing to neighboring points\r
+        yHigh(x - 1) = yHigh(x - 1) + yVelocity(x) / 2\r
+        yHigh(x + 1) = yHigh(x + 1) + yVelocity(x) / 2\r
+    NEXT x\r
+\r
+    ' Play a sound\r
+    SOUND 0, .5\r
+\r
+    ' Check for user input to exit\r
+    IF INKEY$ <> "" THEN SYSTEM\r
+\r
+' Loop back to the start of the simulation loop\r
 GOTO 1\r
 \r
-\r