From: Svjatoslav Agejenko Date: Mon, 26 Aug 2024 11:57:20 +0000 (+0300) Subject: Using AI to improve code readability X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=commitdiff_plain;h=5d4943064a066bc56f5953f71480ada322220549;p=qbasicapps.git Using AI to improve code readability --- diff --git a/Graphics/fract3.bas b/Graphics/fract3.bas index f738a20..3aa1541 100755 --- a/Graphics/fract3.bas +++ b/Graphics/fract3.bas @@ -1,73 +1,94 @@ -' Fractal -' made by Svjatoslav Agejenko -' in 2003.12 -' H-Page: svjatoslav.eu -' E-Mail: svjatoslav@svjatoslav.eu - -DECLARE SUB mo (x!, y!, an!, s!, w!) +' Program to render spiral resembling fractal made out of circles. +' By Svjatoslav Agejenko. +' Email: svjatoslav@svjatoslav.eu +' Homepage: http://www.svjatoslav.eu +' +' Changelog: +' 2003.12, Initial version +' 2024.08, Improved program readability using AI + +DECLARE SUB drawFractal (x!, y!, angle!, size!, w!) DIM SHARED depth DIM SHARED pi -DIM SHARED sh1, sh2, sv1, sv2, hp, vp - +DIM SHARED scaleH1, scaleH2, scaleV1, scaleV2, hp, vp pi = 3.14128 SCREEN 12 - -sv1 = 5 -sv2 = 2 +scaleV1 = 5 +scaleV2 = 2 vp = .2 -sh1 = 2 -sh2 = 1.4 +scaleH1 = 2 +scaleH2 = 1.4 hp = .2 - -mo 320, 240, pi - .9, 50, 0 +drawFractal 320, 240, pi - .9, 50, 0 a$ = INPUT$(1) SYSTEM -SUB mo (x, y, an, s, w) -depth = depth + 1 -IF s < .2 THEN GOTO 1 - -IF depth / 2 = depth \ 2 THEN c = 15 ELSE c = 10 - -CIRCLE (x, y), s, c -PAINT (x, y), c - -IF w <> 1 THEN -x1 = SIN(an) * s * 2.5 + x -y1 = COS(an) * s * 2.5 + y -IF w = 3 THEN ns = s / sv2 ELSE ns = s / sv1 -mo x1, y1, an + vp, ns, 3 -END IF - -IF w <> 2 THEN -x1 = SIN(an - pi / 2) * s * 2.5 + x -y1 = COS(an - pi / 2) * s * 2.5 + y -IF w = 4 THEN ns = s / sh2 ELSE ns = s / sh1 -mo x1, y1, an + hp, ns, 4 -END IF - -IF w <> 3 THEN -x1 = SIN(an - pi) * s * 2.5 + x -y1 = COS(an - pi) * s * 2.5 + y -IF w = 1 THEN ns = s / sv2 ELSE ns = s / sv1 -mo x1, y1, an + vp, ns, 1 -END IF - -IF w <> 4 THEN -x1 = SIN(an - pi * 1.5) * s * 2.5 + x -y1 = COS(an - pi * 1.5) * s * 2.5 + y -IF w = 2 THEN ns = s / sh2 ELSE ns = s / sh1 -mo x1, y1, an + hp, ns, 2 -END IF - -1 -depth = depth - 1 +SUB drawFractal (x, y, angle, size, w) + depth = depth + 1 + IF size < .2 THEN GOTO 1 + + ' Determine color based on the current depth + IF depth / 2 = depth \ 2 THEN + c = 15 + ELSE + c = 10 + END IF + + CIRCLE (x, y), size, c + PAINT (x, y), c + + ' Recursive calls for different directions + IF w <> 1 THEN + x1 = SIN(angle) * size * 2.5 + x + y1 = COS(angle) * size * 2.5 + y + IF w = 3 THEN + newSize = size / scaleV2 + ELSE + newSize = size / scaleV1 + END IF + drawFractal x1, y1, angle + vp, newSize, 3 + END IF + + IF w <> 2 THEN + x1 = SIN(angle - pi / 2) * size * 2.5 + x + y1 = COS(angle - pi / 2) * size * 2.5 + y + IF w = 4 THEN + newSize = size / scaleH2 + ELSE + newSize = size / scaleH1 + END IF + drawFractal x1, y1, angle + hp, newSize, 4 + END IF + + IF w <> 3 THEN + x1 = SIN(angle - pi) * size * 2.5 + x + y1 = COS(angle - pi) * size * 2.5 + y + IF w = 1 THEN + newSize = size / scaleV2 + ELSE + newSize = size / scaleV1 + END IF + drawFractal x1, y1, angle + vp, newSize, 1 + END IF + + IF w <> 4 THEN + x1 = SIN(angle - pi * 1.5) * size * 2.5 + x + y1 = COS(angle - pi * 1.5) * size * 2.5 + y + IF w = 2 THEN + newSize = size / scaleH2 + ELSE + newSize = size / scaleH1 + END IF + drawFractal x1, y1, angle + hp, newSize, 2 + END IF + + 1 + depth = depth - 1 END SUB - diff --git a/Graphics/poly.bas b/Graphics/poly.bas index 89c17d7..52291a5 100755 --- a/Graphics/poly.bas +++ b/Graphics/poly.bas @@ -1,59 +1,64 @@ -' Plygon mapping -' made by Svjatoslav Agejenko -' in 2001 -' H-Page: svjatoslav.eu -' E-Mail: svjatoslav@svjatoslav.eu - +' Program to render polygons at random locations and random colors. +' By Svjatoslav Agejenko. +' Email: svjatoslav@svjatoslav.eu +' Homepage: http://www.svjatoslav.eu +' +' Changelog: +' 2001, Initial version +' 2024.08, Improved program readability using AI + DEFINT A-Z -DECLARE SUB fp (x1, y1, x2, y2, x3, y3, c) +DECLARE SUB fillPolygon (x1, y1, x2, y2, x3, y3, c) SCREEN 13 -2 -x1 = RND * 318 + 1 -y1 = RND * 198 + 1 - -x2 = RND * 318 + 1 -y2 = RND * 198 + 1 - -x3 = RND * 318 + 1 -y3 = RND * 198 + 1 - - -fp x1, y1, x2, y2, x3, y3, RND * 255 -IF INKEY$ <> "" THEN SYSTEM -GOTO 2 - -SUB fp (x1, y1, x2, y2, x3, y3, c) -DIM yb(-10 TO 210) - -mx1 = x1 -my1 = y1 -mx2 = x2 -my2 = y2 -GOSUB mkl -mx1 = x1 -my1 = y1 -mx2 = x3 -my2 = y3 -GOSUB mkl -mx1 = x3 -my1 = y3 -mx2 = x2 -my2 = y2 -GOSUB mkl -GOTO 1 - -mkl: -IF my2 < my1 THEN SWAP my1, my2: SWAP mx1, mx2 -FOR y = my1 TO my2 - 1 -x = mx1 + (mx2 - mx1) * ((y - my1) / (my2 - my1)) -IF yb(y) = 0 THEN -yb(y) = x -ELSE -LINE (x, y)-(yb(y), y), c -END IF -NEXT y +MainLoop: + x1 = RND * 318 + 1 + y1 = RND * 198 + 1 + + x2 = RND * 318 + 1 + y2 = RND * 198 + 1 + + x3 = RND * 318 + 1 + y3 = RND * 198 + 1 + + fillPolygon x1, y1, x2, y2, x3, y3, RND * 255 + IF INKEY$ <> "" THEN SYSTEM +GOTO MainLoop + +SUB fillPolygon (x1, y1, x2, y2, x3, y3, c) + DIM yBuffer(-10 TO 210) + + tempX1 = x1 + tempY1 = y1 + tempX2 = x2 + tempY2 = y2 + GOSUB makeLine + + tempX1 = x1 + tempY1 = y1 + tempX2 = x3 + tempY2 = y3 + GOSUB makeLine + + tempX1 = x3 + tempY1 = y3 + tempX2 = x2 + tempY2 = y2 + GOSUB makeLine + +GOTO FillEnd + +makeLine: + IF tempY2 < tempY1 THEN SWAP tempY1, tempY2: SWAP tempX1, tempX2 + FOR yIndex = tempY1 TO tempY2 - 1 + xPos = tempX1 + (tempX2 - tempX1) * ((yIndex - tempY1) / (tempY2 - tempY1)) + IF yBuffer(yIndex) = 0 THEN + yBuffer(yIndex) = xPos + ELSE + LINE (xPos, yIndex)-(yBuffer(yIndex), yIndex), c + END IF + NEXT yIndex RETURN -1 -END SUB +FillEnd: +END SUB