+++ /dev/null
-' Program to perform mathematical computation.\r
-' It tries to compute surface area that is represented by mathematical function.\r
-' Area is divided into small slices and they are added together to form approximate solution.\r
-'\r
-'\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
-DEFDBL A-Z\r
-SCREEN 13\r
-pi = 3.14159\r
-\r
-p1 = -1\r
-p2 = 4\r
-mi = 0\r
-dia = 1.5\r
-tli = 0\r
-bli = -1\r
-\r
-siz = 100 / dia\r
-FOR a = 0 TO 100 STEP 100 / dia\r
- LINE (0, 100 + a)-(319, 100 + a), 2\r
- LINE (0, 100 - a)-(319, 100 - a), 2\r
-NEXT a\r
-\r
-LINE (0, 100)-(319, 100), 10\r
-ste = (p2 - p1) / 319\r
-o = 0\r
-\r
-' for increased precision we subdivide pixels by 20\r
-FOR x = p1 TO p2 STEP ste / 20\r
-\r
- ' This is the function whose area we are computing.\r
- ' You can change function here to your own.\r
- y = x ^ 2 - 3 * x\r
- \r
- ' there is also some clipping involved, I think better variable names are needed\r
- u = ABS(INT(x) - x)\r
- IF u >= lu THEN su = 1 ELSE su = 0\r
- lu = u\r
- rx = (x - p1) * (1 / ste)\r
- IF lsu > su THEN tl = 1\r
- lsu = su\r
- y = y - mi\r
- IF y > tli THEN y = tli\r
- IF y < bli THEN y = bli\r
- s = s + ABS(y)\r
- ry = -y * siz + 100\r
- IF ry > 199 THEN ry = 199\r
- IF ry < 0 THEN ry = 0\r
- o = o + 1\r
- IF o = 20 THEN\r
- o = 0\r
- IF tl = 1 THEN LINE (rx, 0)-(rx, 199), 4: tl = 0\r
- LINE (rx, 100)-(rx, ry), 15\r
- END IF\r
-NEXT x\r
-LOCATE 1, 1\r
-PRINT s / (1 / ste) / 20\r
-\r