DECLARE SUB calc (tx1!, ty1!, tz1!, tx2!, ty2!, tz2!, tx3!, ty3!, tz3!, c!)\r
DECLARE SUB getan (x1!, y1!, x2!, y2!, N!)\r
DECLARE SUB RotatePoint (zx!, zy!, x1!, y1!, N!)\r
-DECLARE SUB fp (x1!, y1!, x2!, y2!, x3!, y3!, c!)\r
+'--- Renamed here ---\r
+DECLARE SUB FillPolygon (xCoord1!, yCoord1!, xCoord2!, yCoord2!, xCoord3!, yCoord3!, colorVal!)\r
+'---------------------\r
DECLARE SUB InitializeFont ()\r
DECLARE SUB inpur ()\r
DECLARE SUB mkback ()\r
Scene9\r
\r
SUB box (x1, y1, x2, y2)\r
+' Draws a soft-edged rectangular box\r
+' by blending pixel colors around the edges.\r
+ FOR y = y1 TO y2\r
+ s = 10\r
+ IF y - y1 <= 10 THEN\r
+ s = (SQR((20 - (y - y1)) * (y - y1)))\r
+ END IF\r
\r
-FOR y = y1 TO y2\r
- s = 10\r
- IF y - y1 <= 10 THEN\r
- s = (SQR((20 - (y - y1)) * (y - y1)))\r
- END IF\r
-\r
- IF y2 - y <= 10 THEN\r
- s = (SQR((20 - (y2 - y)) * (y2 - y)))\r
- END IF\r
-\r
- FOR x = x1 - s TO x2 + s\r
- c = POINT(x, y)\r
- IF c <= 127 THEN\r
- c = c + 127\r
- IF c > 245 THEN c = 245\r
- PSET (x, y), c\r
+ IF y2 - y <= 10 THEN\r
+ s = (SQR((20 - (y2 - y)) * (y2 - y)))\r
END IF\r
- NEXT x\r
-NEXT y\r
\r
+ FOR x = x1 - s TO x2 + s\r
+ c = POINT(x, y)\r
+ IF c <= 127 THEN\r
+ c = c + 127\r
+ IF c > 245 THEN c = 245\r
+ PSET (x, y), c\r
+ END IF\r
+ NEXT x\r
+ NEXT y\r
END SUB\r
\r
SUB calc (tx1, ty1, tz1, tx2, ty2, tz2, tx3, ty3, tz3, c)\r
+' Computes a value (c) based on\r
+' the positions of three 3D points.\r
+\r
x1 = tx1\r
y1 = ty1\r
z1 = tz1\r
IF c < 0 THEN c = 0\r
END SUB\r
\r
-SUB fp (x1, y1, x2, y2, x3, y3, c)\r
-\r
-DIM yb(-100 TO 300)\r
-\r
-mx1 = x1\r
-my1 = y1\r
-mx2 = x2\r
-my2 = y2\r
-GOSUB mkl\r
-mx1 = x1\r
-my1 = y1\r
-mx2 = x3\r
-my2 = y3\r
-GOSUB mkl\r
-mx1 = x3\r
-my1 = y3\r
-mx2 = x2\r
-my2 = y2\r
-GOSUB mkl\r
-GOTO 1\r
+SUB FillPolygon (xCoord1, yCoord1, xCoord2, yCoord2, xCoord3, yCoord3, colorVal)\r
+\r
+' Fills a triangular area by connecting the edges.\r
+' It uses a scanline approach, storing intersection points in yb() array,\r
+' then drawing horizontal lines between those intersection points.\r
+\r
+ DIM yb(-100 TO 300)\r
+\r
+ ' The following variables (mx1, my1, etc.) track the endpoints of edges\r
+ mx1 = xCoord1\r
+ my1 = yCoord1\r
+ mx2 = xCoord2\r
+ my2 = yCoord2\r
+ GOSUB mkl\r
+\r
+ mx1 = xCoord1\r
+ my1 = yCoord1\r
+ mx2 = xCoord3\r
+ my2 = yCoord3\r
+ GOSUB mkl\r
+\r
+ mx1 = xCoord3\r
+ my1 = yCoord3\r
+ mx2 = xCoord2\r
+ my2 = yCoord2\r
+ GOSUB mkl\r
+\r
+ GOTO 1\r
\r
mkl:\r
-IF my2 < my1 THEN SWAP my1, my2: SWAP mx1, mx2\r
-FOR y = my1 TO my2 - 1\r
- x = mx1 + (mx2 - mx1) * ((y - my1) / (my2 - my1))\r
- IF yb(y) = 0 THEN\r
- yb(y) = x\r
- ELSE\r
- LINE (x, y)-(yb(y), y), c\r
+ ' If the second point is above the first, swap them\r
+ IF my2 < my1 THEN\r
+ SWAP my1, my2\r
+ SWAP mx1, mx2\r
END IF\r
-NEXT y\r
-RETURN\r
-\r
-1\r
\r
-'LINE (x1, y1)-(x2, y2), 0\r
-'LINE (x3, y3)-(x2, y2), 0\r
-'LINE (x1, y1)-(x3, y3), 0\r
+ ' Scan through each row (y) in the current edge segment\r
+ FOR y = my1 TO my2 - 1\r
+ x = mx1 + (mx2 - mx1) * ((y - my1) / (my2 - my1))\r
+ IF yb(y) = 0 THEN\r
+ ' First intersection on this scanline\r
+ yb(y) = x\r
+ ELSE\r
+ ' Second intersection -> draw a horizontal line\r
+ LINE (x, y)-(yb(y), y), colorVal\r
+ END IF\r
+ NEXT y\r
+ RETURN\r
\r
+1:\r
END SUB\r
+'----------------------------------------------------------------------------------\r
\r
SUB getan (x1, y1, x2, y2, N)\r
IF y1 = y2 THEN\r
END IF\r
\r
IF y2 > y1 THEN\r
- IF x2 = x1 THEN N = pi: GOTO 2\r
+ IF x2 = x1 THEN\r
+ N = pi\r
+ GOTO 2\r
+ END IF\r
IF x2 > x1 THEN\r
N = (pi * 1) - ATN((x2 - x1) / (y2 - y1))\r
ELSE\r
N = pi + ATN((x1 - x2) / (y2 - y1))\r
END IF\r
ELSE\r
- IF x2 = x1 THEN N = 0: GOTO 2\r
+ IF x2 = x1 THEN\r
+ N = 0\r
+ GOTO 2\r
+ END IF\r
IF x2 > x1 THEN\r
N = ATN((x2 - x1) / (y1 - y2))\r
ELSE\r
END IF\r
END IF\r
\r
-2\r
+2:\r
END SUB\r
\r
' Subroutine to initialize font data\r
END SUB\r
\r
SUB inpur\r
-a$ = INPUT$(1)\r
-\r
+ a$ = INPUT$(1)\r
END SUB\r
\r
DEFINT A-Z\r
SUB mkback\r
-CLS\r
-SetPalette 0, 5, 5, 250\r
-SetPalette 0, 5, 5, 251\r
-SetPalette 0, 5, 5, 252\r
-SetPalette 0, 5, 5, 253\r
-SetPalette 0, 5, 5, 254\r
-SetPalette 0, 5, 5, 255\r
-\r
-FOR a = 0 TO 127\r
- OUT &H3C8, a\r
- OUT &H3C9, SIN(a / 22) * 30 + 30\r
- OUT &H3C9, SIN(a / 18) * 5 + 5\r
- OUT &H3C9, COS(a / 12) * 10 + 10\r
-NEXT a\r
-\r
-FOR a = 128 TO 245\r
- OUT &H3C8, a\r
- b = a - 128\r
- OUT &H3C9, SIN(b / 22) * 4 + 10\r
- OUT &H3C9, SIN(b / 18) * 4 + 10\r
- OUT &H3C9, COS(b / 12) * 4 + 10\r
-NEXT a\r
-\r
-DIM lm\r
-lm = 127\r
-\r
-s = 2 ^ 8\r
-5\r
-s = s \ 2\r
-x2 = (319 \ s) - 1\r
-y2 = (199 \ s) - 1\r
-\r
-FOR y = 0 TO y2\r
- FOR x = 0 TO x2\r
- x1 = x * s\r
- y1 = y * s\r
- c1 = POINT(x1, y1)\r
- c2 = POINT(x1 + s, y1)\r
- c3 = POINT(x1, y1 + s)\r
- c4 = POINT(x1 + s, y1 + s)\r
-\r
- sp = s \ 2\r
-\r
- cc2 = ((c1 + c2) / 2) + (RND * 6) - 3\r
- IF cc2 > lm THEN cc2 = lm\r
-\r
- cc3 = ((c1 + c3) / 2) + (RND * 6) - 3\r
- IF cc3 > lm THEN cc3 = lm\r
-\r
- cc4 = ((c2 + c4) / 2) + (RND * 6) - 3\r
- IF cc4 > lm THEN cc4 = lm\r
-\r
- cc5 = ((c3 + c4) / 2) + (RND * 6) - 3\r
- IF cc5 > lm THEN cc5 = lm\r
-\r
- cc1 = ((cc2 + cc3 + cc4 + cc5) / 4) + (RND * 6) - 3\r
- IF cc1 > lm THEN cc1 = lm\r
-\r
- PSET (x1 + sp, y1 + sp), cc1\r
- PSET (x1 + sp, y1), cc2\r
- PSET (x1, y1 + sp), cc3\r
- PSET (x1 + s, y1 + sp), cc4\r
- PSET (x1 + sp, y1 + s), cc5\r
- NEXT x\r
-NEXT y\r
-IF s > 2 THEN GOTO 5\r
+ CLS\r
+ SetPalette 0, 5, 5, 250\r
+ SetPalette 0, 5, 5, 251\r
+ SetPalette 0, 5, 5, 252\r
+ SetPalette 0, 5, 5, 253\r
+ SetPalette 0, 5, 5, 254\r
+ SetPalette 0, 5, 5, 255\r
+\r
+ FOR a = 0 TO 127\r
+ OUT &H3C8, a\r
+ OUT &H3C9, SIN(a / 22) * 30 + 30\r
+ OUT &H3C9, SIN(a / 18) * 5 + 5\r
+ OUT &H3C9, COS(a / 12) * 10 + 10\r
+ NEXT a\r
+\r
+ FOR a = 128 TO 245\r
+ OUT &H3C8, a\r
+ b = a - 128\r
+ OUT &H3C9, SIN(b / 22) * 4 + 10\r
+ OUT &H3C9, SIN(b / 18) * 4 + 10\r
+ OUT &H3C9, COS(b / 12) * 4 + 10\r
+ NEXT a\r
+\r
+ DIM lm\r
+ lm = 127\r
+\r
+ s = 2 ^ 8\r
+5:\r
+ s = s \ 2\r
+ x2 = (319 \ s) - 1\r
+ y2 = (199 \ s) - 1\r
+\r
+ FOR y = 0 TO y2\r
+ FOR x = 0 TO x2\r
+ x1 = x * s\r
+ y1 = y * s\r
+ c1 = POINT(x1, y1)\r
+ c2 = POINT(x1 + s, y1)\r
+ c3 = POINT(x1, y1 + s)\r
+ c4 = POINT(x1 + s, y1 + s)\r
+\r
+ sp = s \ 2\r
+\r
+ cc2 = ((c1 + c2) / 2) + (RND * 6) - 3\r
+ IF cc2 > lm THEN cc2 = lm\r
+\r
+ cc3 = ((c1 + c3) / 2) + (RND * 6) - 3\r
+ IF cc3 > lm THEN cc3 = lm\r
+\r
+ cc4 = ((c2 + c4) / 2) + (RND * 6) - 3\r
+ IF cc4 > lm THEN cc4 = lm\r
+\r
+ cc5 = ((c3 + c4) / 2) + (RND * 6) - 3\r
+ IF cc5 > lm THEN cc5 = lm\r
+\r
+ cc1 = ((cc2 + cc3 + cc4 + cc5) / 4) + (RND * 6) - 3\r
+ IF cc1 > lm THEN cc1 = lm\r
+\r
+ PSET (x1 + sp, y1 + sp), cc1\r
+ PSET (x1 + sp, y1), cc2\r
+ PSET (x1, y1 + sp), cc3\r
+ PSET (x1 + s, y1 + sp), cc4\r
+ PSET (x1 + sp, y1 + s), cc5\r
+ NEXT x\r
+ NEXT y\r
+ IF s > 2 THEN GOTO 5\r
\r
END SUB\r
\r
IF c1 > 0 THEN PSET (x1 + x2, y1 + y), c\r
NEXT x1\r
NEXT y1\r
-7\r
+7:\r
x2 = x2 + 8\r
NEXT a\r
END IF\r
END SUB\r
\r
SUB Scene1\r
-SetPalette 0, 63, 20, 255\r
-DIM px(0 TO 1000)\r
-DIM py(0 TO 1000)\r
-DIM pz(0 TO 1000)\r
-DIM px1(0 TO 1000)\r
-DIM py1(0 TO 1000)\r
-DIM lin1!(0 TO 1500)\r
-DIM lin2!(0 TO 1500)\r
-DIM lbx1(1 TO 1500)\r
-DIM lby1(1 TO 1500)\r
-DIM lbx2(1 TO 1500)\r
-DIM lby2(1 TO 1500)\r
-\r
-DIM np, nl\r
-DIM an1, an2, an3\r
-DIM an1s, an2s, an3s\r
-DIM inco, inpo\r
-DIM tim\r
-DIM nlt\r
-DIM ehi\r
-\r
-tim = 0\r
-ehi = 1\r
-\r
-an1 = 0\r
-an2 = 0\r
-\r
-np = -1\r
-nl = 0\r
-inco = 0\r
-inpo = 0\r
-nlt = 0\r
-\r
-SetPalette 40, 40, 40, 254\r
-COLOR 254\r
-LOCATE 2, 11\r
-PRINT "�ks hetk"\r
-\r
-OPEN "data.dat" FOR INPUT AS #1\r
-INPUT #1, a\r
-INPUT #1, inco\r
-INPUT #1, inpo\r
-\r
-FOR a = 1 TO inco\r
- INPUT #1, x, y, z\r
- np = np + 1\r
- px(np) = x - 100\r
- py(np) = y\r
- pz(np) = z\r
-NEXT a\r
-\r
-INPUT #1, b, b, l1, l2, l3\r
-\r
-FOR a = 1 TO inpo - 1\r
- INPUT #1, b, b, l1!, l2!, l3!\r
- nlin1! = l1!\r
- nlin2! = l2!\r
- GOSUB addlin\r
- nlin1! = l2!\r
- nlin2! = l3!\r
- GOSUB addlin\r
- nlin1! = l1!\r
- nlin2! = l3!\r
- GOSUB addlin\r
- LOCATE 4, 10\r
- PRINT STR$(INT(a / (inpo - 1) * 100)) + "% valmis"\r
-NEXT a\r
-CLOSE 1\r
-CLS\r
-\r
-3\r
-tim = tim + 1\r
-sj$ = INKEY$\r
-IF sj$ = "q" THEN END\r
-\r
-a = COS(tim / 25)\r
-an1 = COS(tim / 29) * a\r
-an2 = (pii / 2) + SIN(tim / 42) * a\r
-\r
-s1 = SIN(an1)\r
-c1 = COS(an1)\r
-s2 = SIN(an2)\r
-c2 = COS(an2)\r
-\r
-IF ehi >= 1 THEN\r
- nlt = nlt + ehi\r
- ehi = ehi + .03\r
- IF nlt > nl THEN nlt = nl: ehi = 0\r
-END IF\r
-\r
-FOR a = 0 TO np\r
- x = px(a)\r
- y = py(a)\r
- z = pz(a)\r
-\r
- z2 = z * s1 + y * c1\r
- y1 = y * s1 - z * c1\r
-\r
- z1 = z2 * s2 + x * c2\r
- x1 = x * s2 - z2 * c2\r
-\r
-z1 = z1 + 100\r
-\r
-x1 = x1 / z1 * 74 * 2\r
-y1 = y1 / z1 * 65 * 2\r
-\r
-px1(a) = x1 + 160\r
-py1(a) = y1 + 80\r
-NEXT a\r
-\r
-FOR a = 1 TO nlt\r
- l1 = lin1!(a)\r
- l2 = lin2!(a)\r
- x1 = px1(l1)\r
- y1 = py1(l1)\r
- x2 = px1(l2)\r
- y2 = py1(l2)\r
- LINE (lbx1(a), lby1(a))-(lbx2(a), lby2(a)), 0\r
- LINE (x1, y1)-(x2, y2), 255\r
- lbx1(a) = x1\r
- lby1(a) = y1\r
- lbx2(a) = x2\r
- lby2(a) = y2\r
-NEXT a\r
-SOUND 0, .5\r
-IF tim < 280 THEN GOTO 3\r
-GOTO 4\r
+ SetPalette 0, 63, 20, 255\r
+ DIM px(0 TO 1000)\r
+ DIM py(0 TO 1000)\r
+ DIM pz(0 TO 1000)\r
+ DIM px1(0 TO 1000)\r
+ DIM py1(0 TO 1000)\r
+ DIM lin1!(0 TO 1500)\r
+ DIM lin2!(0 TO 1500)\r
+ DIM lbx1(1 TO 1500)\r
+ DIM lby1(1 TO 1500)\r
+ DIM lbx2(1 TO 1500)\r
+ DIM lby2(1 TO 1500)\r
+\r
+ DIM np, nl\r
+ DIM an1, an2, an3\r
+ DIM an1s, an2s, an3s\r
+ DIM inco, inpo\r
+ DIM tim\r
+ DIM nlt\r
+ DIM ehi\r
+\r
+ tim = 0\r
+ ehi = 1\r
+\r
+ an1 = 0\r
+ an2 = 0\r
+\r
+ np = -1\r
+ nl = 0\r
+ inco = 0\r
+ inpo = 0\r
+ nlt = 0\r
+\r
+ SetPalette 40, 40, 40, 254\r
+ COLOR 254\r
+ LOCATE 2, 11\r
+ PRINT "�ks hetk"\r
+\r
+ OPEN "data.dat" FOR INPUT AS #1\r
+ INPUT #1, a\r
+ INPUT #1, inco\r
+ INPUT #1, inpo\r
+\r
+ FOR a = 1 TO inco\r
+ INPUT #1, x, y, z\r
+ np = np + 1\r
+ px(np) = x - 100\r
+ py(np) = y\r
+ pz(np) = z\r
+ NEXT a\r
\r
-addlin:\r
-FOR b = 1 TO nl\r
- IF lin1!(b) = nlin1! THEN\r
- IF lin2!(b) = nlin2! THEN RETURN\r
- END IF\r
- IF lin1!(b) = nlin2! THEN\r
- IF lin2!(b) = nlin1! THEN RETURN\r
+ INPUT #1, b, b, l1, l2, l3\r
+\r
+ FOR a = 1 TO inpo - 1\r
+ INPUT #1, b, b, l1!, l2!, l3!\r
+ nlin1! = l1!\r
+ nlin2! = l2!\r
+ GOSUB addlin\r
+ nlin1! = l2!\r
+ nlin2! = l3!\r
+ GOSUB addlin\r
+ nlin1! = l1!\r
+ nlin2! = l3!\r
+ GOSUB addlin\r
+ LOCATE 4, 10\r
+ PRINT STR$(INT(a / (inpo - 1) * 100)) + "% valmis"\r
+ NEXT a\r
+ CLOSE 1\r
+ CLS\r
+\r
+3:\r
+ tim = tim + 1\r
+ sj$ = INKEY$\r
+ IF sj$ = "q" THEN END\r
+\r
+ a = COS(tim / 25)\r
+ an1 = COS(tim / 29) * a\r
+ an2 = (pii / 2) + SIN(tim / 42) * a\r
+\r
+ s1 = SIN(an1)\r
+ c1 = COS(an1)\r
+ s2 = SIN(an2)\r
+ c2 = COS(an2)\r
+\r
+ IF ehi >= 1 THEN\r
+ nlt = nlt + ehi\r
+ ehi = ehi + .03\r
+ IF nlt > nl THEN nlt = nl: ehi = 0\r
END IF\r
-NEXT b\r
-nl = nl + 1\r
-lin1!(nl) = nlin1!\r
-lin2!(nl) = nlin2!\r
-RETURN\r
-\r
-4\r
-angl1 = an1\r
-angl2 = an2\r
+\r
+ FOR a = 0 TO np\r
+ x = px(a)\r
+ y = py(a)\r
+ z = pz(a)\r
+\r
+ z2 = z * s1 + y * c1\r
+ y1 = y * s1 - z * c1\r
+\r
+ z1 = z2 * s2 + x * c2\r
+ x1 = x * s2 - z2 * c2\r
+\r
+ z1 = z1 + 100\r
+\r
+ x1 = x1 / z1 * 74 * 2\r
+ y1 = y1 / z1 * 65 * 2\r
+\r
+ px1(a) = x1 + 160\r
+ py1(a) = y1 + 80\r
+ NEXT a\r
+\r
+ FOR a = 1 TO nlt\r
+ l1 = lin1!(a)\r
+ l2 = lin2!(a)\r
+ x1 = px1(l1)\r
+ y1 = py1(l1)\r
+ x2 = px1(l2)\r
+ y2 = py1(l2)\r
+ LINE (lbx1(a), lby1(a))-(lbx2(a), lby2(a)), 0\r
+ LINE (x1, y1)-(x2, y2), 255\r
+ lbx1(a) = x1\r
+ lby1(a) = y1\r
+ lbx2(a) = x2\r
+ lby2(a) = y2\r
+ NEXT a\r
+ SOUND 0, .5\r
+ IF tim < 280 THEN GOTO 3\r
+ GOTO 4\r
+\r
+addlin:\r
+ FOR b = 1 TO nl\r
+ IF lin1!(b) = nlin1! THEN\r
+ IF lin2!(b) = nlin2! THEN RETURN\r
+ END IF\r
+ IF lin1!(b) = nlin2! THEN\r
+ IF lin2!(b) = nlin1! THEN RETURN\r
+ END IF\r
+ NEXT b\r
+ nl = nl + 1\r
+ lin1!(nl) = nlin1!\r
+ lin2!(nl) = nlin2!\r
+ RETURN\r
+\r
+4:\r
+ angl1 = an1\r
+ angl2 = an2\r
END SUB\r
\r
SUB Scene2\r
-SetPalette 0, 63, 20, 255\r
-CLS\r
-angl1 = 0\r
-angl2 = 1.5\r
-DIM px(0 TO 2000)\r
-DIM py(0 TO 2000)\r
-DIM pz(0 TO 2000)\r
-\r
-DIM rpx(0 TO 2000)\r
-DIM rpy(0 TO 2000)\r
-DIM rpz(0 TO 2000)\r
-\r
-DIM pol1(1 TO 2000)\r
-DIM pol2(1 TO 2000)\r
-DIM pol3(1 TO 2000)\r
-\r
-np = 0\r
-nl = 0\r
-\r
-OPEN "data.dat" FOR INPUT AS #1\r
-INPUT #1, a\r
-INPUT #1, inco\r
-INPUT #1, inpo\r
-\r
-FOR a = 1 TO inco\r
- INPUT #1, x, y, z\r
- px(np) = x - 100\r
- py(np) = y\r
- pz(np) = z\r
- np = np + 1\r
-NEXT a\r
-\r
-INPUT #1, b, b, l1, l2, l3\r
+ SetPalette 0, 63, 20, 255\r
+ CLS\r
+ angl1 = 0\r
+ angl2 = 1.5\r
+ DIM px(0 TO 2000)\r
+ DIM py(0 TO 2000)\r
+ DIM pz(0 TO 2000)\r
+\r
+ DIM rpx(0 TO 2000)\r
+ DIM rpy(0 TO 2000)\r
+ DIM rpz(0 TO 2000)\r
+\r
+ DIM pol1(1 TO 2000)\r
+ DIM pol2(1 TO 2000)\r
+ DIM pol3(1 TO 2000)\r
+\r
+ np = 0\r
+ nl = 0\r
+\r
+ OPEN "data.dat" FOR INPUT AS #1\r
+ INPUT #1, a\r
+ INPUT #1, inco\r
+ INPUT #1, inpo\r
+\r
+ FOR a = 1 TO inco\r
+ INPUT #1, x, y, z\r
+ px(np) = x - 100\r
+ py(np) = y\r
+ pz(np) = z\r
+ np = np + 1\r
+ NEXT a\r
\r
-FOR a = 1 TO inpo - 1\r
INPUT #1, b, b, l1, l2, l3\r
- nl = nl + 1\r
- pol1(nl) = l1\r
- pol2(nl) = l2\r
- pol3(nl) = l3\r
-NEXT a\r
-CLOSE 1\r
-\r
-s1 = SIN(angl1)\r
-c1 = COS(angl1)\r
-s2 = SIN(angl2)\r
-c2 = COS(angl2)\r
-\r
-FOR a = 0 TO np\r
- x = px(a)\r
- y = py(a)\r
- z = pz(a)\r
- z2 = z * s1 + y * c1\r
- y1 = y * s1 - z * c1\r
- z1 = z2 * s2 + x * c2\r
- x1 = x * s2 - z2 * c2\r
- z1 = z1 + 100\r
- x1 = x1 / z1 * 74 * 2\r
- y1 = y1 / z1 * 65 * 2\r
- rpx(a) = x1 + 160\r
- rpy(a) = y1 + 80\r
- rpz(a) = z1\r
-NEXT a\r
-\r
-'FOR a = 1 TO 63\r
-'SetPalette COS(a / 9) * 30 + 30, SIN(a / 5) * 30 + 30, SIN(a / 13) * 30 + 30, a\r
-'NEXT a\r
-\r
-FOR a = 1 TO 49\r
- SetPalette a * 1.1 + 20, a * 1.1 + 10, a * 1.1, a\r
-NEXT a\r
-\r
-DIM polz(1 TO nl)\r
-\r
-FOR a = 1 TO nl\r
- polz(a) = (rpz(pol1(a)) + rpz(pol2(a)) + rpz(pol3(a)))\r
-NEXT a\r
-\r
-e = nl\r
-FOR a = 1 TO nl\r
- su = -10000\r
- sun = 1\r
- FOR b = 1 TO e\r
- IF polz(b) > su THEN su = polz(b): sun = b\r
- NEXT b\r
\r
- p1 = pol1(sun)\r
- p2 = pol2(sun)\r
- p3 = pol3(sun)\r
+ FOR a = 1 TO inpo - 1\r
+ INPUT #1, b, b, l1, l2, l3\r
+ nl = nl + 1\r
+ pol1(nl) = l1\r
+ pol2(nl) = l2\r
+ pol3(nl) = l3\r
+ NEXT a\r
+ CLOSE #1\r
+\r
+ s1 = SIN(angl1)\r
+ c1 = COS(angl1)\r
+ s2 = SIN(angl2)\r
+ c2 = COS(angl2)\r
+\r
+ FOR a = 0 TO np\r
+ x = px(a)\r
+ y = py(a)\r
+ z = pz(a)\r
+ z2 = z * s1 + y * c1\r
+ y1 = y * s1 - z * c1\r
+ z1 = z2 * s2 + x * c2\r
+ x1 = x * s2 - z2 * c2\r
+ z1 = z1 + 100\r
+ x1 = x1 / z1 * 74 * 2\r
+ y1 = y1 / z1 * 65 * 2\r
+ rpx(a) = x1 + 160\r
+ rpy(a) = y1 + 80\r
+ rpz(a) = z1\r
+ NEXT a\r
+\r
+ 'FOR a = 1 TO 63\r
+ 'SetPalette COS(a / 9) * 30 + 30, SIN(a / 5) * 30 + 30, SIN(a / 13) * 30 + 30, a\r
+ 'NEXT a\r
+\r
+ FOR a = 1 TO 49\r
+ SetPalette a * 1.1 + 20, a * 1.1 + 10, a * 1.1, a\r
+ NEXT a\r
+\r
+ DIM polz(1 TO nl)\r
\r
- polz(sun) = polz(e)\r
- pol1(sun) = pol1(e)\r
- pol2(sun) = pol2(e)\r
- pol3(sun) = pol3(e)\r
- e = e - 1\r
- calc rpx(p1), rpy(p1), rpz(p1), rpx(p2), rpy(p2), rpz(p2), rpx(p3), rpy(p3), rpz(p3), d\r
- fp INT(rpx(p1)), INT(rpy(p1)), INT(rpx(p2)), INT(rpy(p2)), INT(rpx(p3)), INT(rpy(p3)), INT(d)\r
-'SOUND 0, .07\r
-NEXT a\r
+ FOR a = 1 TO nl\r
+ polz(a) = (rpz(pol1(a)) + rpz(pol2(a)) + rpz(pol3(a)))\r
+ NEXT a\r
\r
+ e = nl\r
+ FOR a = 1 TO nl\r
+ su = -10000\r
+ sun = 1\r
+ FOR b = 1 TO e\r
+ IF polz(b) > su THEN su = polz(b): sun = b\r
+ NEXT b\r
+\r
+ p1 = pol1(sun)\r
+ p2 = pol2(sun)\r
+ p3 = pol3(sun)\r
+\r
+ polz(sun) = polz(e)\r
+ pol1(sun) = pol1(e)\r
+ pol2(sun) = pol2(e)\r
+ pol3(sun) = pol3(e)\r
+ e = e - 1\r
+\r
+ calc rpx(p1), rpy(p1), rpz(p1), rpx(p2), rpy(p2), rpz(p2), rpx(p3), rpy(p3), rpz(p3), d\r
+ ' Call our renamed FillPolygon instead of old "fp"\r
+ FillPolygon INT(rpx(p1)), INT(rpy(p1)), INT(rpx(p2)), INT(rpy(p2)), INT(rpx(p3)), INT(rpy(p3)), INT(d)\r
+ 'SOUND 0, .07\r
+ NEXT a\r
END SUB\r
\r
SUB Scene3\r
-DIM buf(1 TO 10000)\r
-DIM buf1(0 TO 35)\r
+ DIM buf(1 TO 10000)\r
+ DIM buf1(0 TO 35)\r
\r
-FOR a = 1 TO 20\r
- SOUND 0, 1\r
-NEXT a\r
-FOR a = 0 TO 30\r
- IF a <= 5 THEN buf1(a) = 120 + (SQR((20 - a) * a))\r
- IF (a > 5) AND (a < 25) THEN buf1(a) = 120 + 10\r
- IF a >= 25 THEN buf1(a) = 120 + (SQR((30 - a) * (a - 10)))\r
-NEXT a\r
-\r
-FOR y = 0 TO 30\r
- FOR x = 10 TO 300 STEP 10\r
- GET (x, 0)-(x + 9, 198), buf(1)\r
- PUT (x, 1), buf(1), PSET\r
- NEXT x\r
- FOR a = 1 TO 49\r
- SetPalette a * 1.1 + (20 - y), a * 1.1 + 10 + (y / 1.5), a * 1.1, a\r
+ FOR a = 1 TO 20\r
+ SOUND 0, 1\r
NEXT a\r
- SOUND 0, 1\r
- LINE (160 - buf1(y), 20)-(160 + buf1(y), 20), 255\r
-NEXT y\r
-\r
-LOCATE 1, 1\r
-COLOR 254\r
-SetPalette 0, 0, 0, 254\r
-PRINT "Tehisintellekt"\r
-SetPalette 63, 0, 0, 253\r
-FOR y = 0 TO 8\r
- FOR x = 0 TO 120\r
- c = POINT(x, y)\r
- IF c > 0 THEN CIRCLE (x * 2 + 50, y * 3 + 26), 2, 0\r
- NEXT x\r
- FOR x = 0 TO 120\r
- c = POINT(x, y + 1)\r
- IF c > 0 THEN CIRCLE (x * 2 + 50, (y + 1) * 3 + 26), 2, 253\r
- NEXT x\r
- SOUND 0, 2\r
-NEXT y\r
-\r
-RANDOMIZE 1\r
-\r
-FOR a = 1 TO 10\r
- y = RND * 100 + 50\r
- FOR x = 10 TO 300 STEP 10\r
- GET (x, y)-(x + 9, 198), buf(1)\r
- PUT (x, y - 1), buf(1), PSET\r
- NEXT x\r
-NEXT a\r
-\r
-COLOR 253\r
-SetPalette 0, 0, 0, 253\r
-LOCATE 1\r
-PRINT " autor: Svjatoslav Agejenko 30.09.2001 "\r
-GET (0, 0)-(319, 8), buf(1)\r
-LOCATE 1\r
-PRINT " "\r
-PUT (0, 190), buf(1), PSET\r
-FOR a = 1 TO 32\r
- SetPalette 0, a, a * 2, 253\r
- SOUND 0, 1\r
-NEXT a\r
-inpur\r
+ FOR a = 0 TO 30\r
+ IF a <= 5 THEN buf1(a) = 120 + (SQR((20 - a) * a))\r
+ IF (a > 5) AND (a < 25) THEN buf1(a) = 120 + 10\r
+ IF a >= 25 THEN buf1(a) = 120 + (SQR((30 - a) * (a - 10)))\r
+ NEXT a\r
+\r
+ FOR y = 0 TO 30\r
+ FOR x = 10 TO 300 STEP 10\r
+ GET (x, 0)-(x + 9, 198), buf(1)\r
+ PUT (x, 1), buf(1), PSET\r
+ NEXT x\r
+ FOR a = 1 TO 49\r
+ SetPalette a * 1.1 + (20 - y), a * 1.1 + 10 + (y / 1.5), a * 1.1, a\r
+ NEXT a\r
+ SOUND 0, 1\r
+ LINE (160 - buf1(y), 20)-(160 + buf1(y), 20), 255\r
+ NEXT y\r
+\r
+ LOCATE 1, 1\r
+ COLOR 254\r
+ SetPalette 0, 0, 0, 254\r
+ PRINT "Tehisintellekt"\r
+ SetPalette 63, 0, 0, 253\r
+ FOR y = 0 TO 8\r
+ FOR x = 0 TO 120\r
+ c = POINT(x, y)\r
+ IF c > 0 THEN CIRCLE (x * 2 + 50, y * 3 + 26), 2, 0\r
+ NEXT x\r
+ FOR x = 0 TO 120\r
+ c = POINT(x, y + 1)\r
+ IF c > 0 THEN CIRCLE (x * 2 + 50, (y + 1) * 3 + 26), 2, 253\r
+ NEXT x\r
+ SOUND 0, 2\r
+ NEXT y\r
+\r
+ RANDOMIZE 1\r
+\r
+ FOR a = 1 TO 10\r
+ y = RND * 100 + 50\r
+ FOR x = 10 TO 300 STEP 10\r
+ GET (x, y)-(x + 9, 198), buf(1)\r
+ PUT (x, y - 1), buf(1), PSET\r
+ NEXT x\r
+ NEXT a\r
+\r
+ COLOR 253\r
+ SetPalette 0, 0, 0, 253\r
+ LOCATE 1\r
+ PRINT " autor: Svjatoslav Agejenko 30.09.2001 "\r
+ GET (0, 0)-(319, 8), buf(1)\r
+ LOCATE 1\r
+ PRINT " "\r
+ PUT (0, 190), buf(1), PSET\r
+ FOR a = 1 TO 32\r
+ SetPalette 0, a, a * 2, 253\r
+ SOUND 0, 1\r
+ NEXT a\r
+ inpur\r
END SUB\r
\r
SUB Scene4\r
-RANDOMIZE 1\r
-mkback\r
-\r
-box 30, 50, 290, 150\r
-\r
-SetPalette 32, 64, 32, 250\r
-y = 0\r
-PrintText 30, 70 + y, 1, 250, " Spatial vision"\r
-y = y + 16\r
-PrintText 30, 70 + y, 1, 250, "Object recognition"\r
-y = y + 20\r
-PrintText 30, 70 + y, 1, 250, "Goal: + interpriteerimine"\r
-y = y + 16\r
-PrintText 30, 70 + y, 1, 250, " + automaatjuhtimine"\r
-\r
-inpur\r
+ RANDOMIZE 1\r
+ mkback\r
+\r
+ box 30, 50, 290, 150\r
+\r
+ SetPalette 32, 64, 32, 250\r
+ y = 0\r
+ PrintText 30, 70 + y, 1, 250, " Spatial vision"\r
+ y = y + 16\r
+ PrintText 30, 70 + y, 1, 250, "Object recognition"\r
+ y = y + 20\r
+ PrintText 30, 70 + y, 1, 250, "Goal: + interpriteerimine"\r
+ y = y + 16\r
+ PrintText 30, 70 + y, 1, 250, " + automaatjuhtimine"\r
+\r
+ inpur\r
END SUB\r
\r
SUB Scene5\r
-RANDOMIZE 4\r
-mkback\r
-\r
-box 30, 50, 290, 150\r
-\r
-SetPalette 32, 64, 32, 250\r
-y = -8\r
-PrintText 30, 70 + y, 1, 250, "Tunnuste ekstraheerimise protsess"\r
-y = y + 20\r
-PrintText 30, 70 + y, 1, 250, "a) Laplace - Gaussi operaator;"\r
-y = y + 12\r
-PrintText 30, 70 + y, 1, 250, "b) lainekese teisenduse multi-"\r
-y = y + 12\r
-PrintText 30, 70 + y, 1, 250, " skaalaline serva avastamine;"\r
-y = y + 12\r
-PrintText 30, 70 + y, 1, 250, "c) h�perveeru teooria lihtsate"\r
-y = y + 12\r
-PrintText 30, 70 + y, 1, 250, " rakkude p�him�tted."\r
-\r
-inpur\r
+ RANDOMIZE 4\r
+ mkback\r
+\r
+ box 30, 50, 290, 150\r
+\r
+ SetPalette 32, 64, 32, 250\r
+ y = -8\r
+ PrintText 30, 70 + y, 1, 250, "Tunnuste ekstraheerimise protsess"\r
+ y = y + 20\r
+ PrintText 30, 70 + y, 1, 250, "a) Laplace - Gaussi operaator;"\r
+ y = y + 12\r
+ PrintText 30, 70 + y, 1, 250, "b) lainekese teisenduse multi-"\r
+ y = y + 12\r
+ PrintText 30, 70 + y, 1, 250, " skaalaline serva avastamine;"\r
+ y = y + 12\r
+ PrintText 30, 70 + y, 1, 250, "c) h�perveeru teooria lihtsate"\r
+ y = y + 12\r
+ PrintText 30, 70 + y, 1, 250, " rakkude p�him�tted."\r
+\r
+ inpur\r
END SUB\r
\r
SUB Scene7\r
-SetPalette 0, 0, 0, 0\r
-FOR a = 0 TO 19\r
- FOR y = a TO 199 STEP 20\r
- LINE (0, y)-(319, y), 0\r
- NEXT y\r
- SOUND 0, .5\r
-NEXT a\r
-\r
+ SetPalette 0, 0, 0, 0\r
+ FOR a = 0 TO 19\r
+ FOR y = a TO 199 STEP 20\r
+ LINE (0, y)-(319, y), 0\r
+ NEXT y\r
+ SOUND 0, .5\r
+ NEXT a\r
END SUB\r
\r
SUB Scene8\r
-FOR a = 1 TO 50\r
- SetPalette 0, 0, 0, a\r
-NEXT a\r
-\r
-DIM px(0 TO 800)\r
-DIM py(0 TO 800)\r
-DIM pz(0 TO 800)\r
-DIM lin1(0 TO 1000)\r
-DIM lin2(0 TO 1000)\r
-DIM linc(0 TO 1000)\r
-DIM lbx1(1 TO 1000)\r
-DIM lby1(1 TO 1000)\r
-DIM lbx2(1 TO 1000)\r
-DIM lby2(1 TO 1000)\r
-DIM px1(0 TO 800)\r
-DIM py1(0 TO 800)\r
-DIM hlkx(1 TO 50)\r
-DIM hlky(1 TO 50)\r
-DIM hlkz(1 TO 50)\r
-DIM hlka\r
-DIM hlkr\r
-DIM hlknu\r
-DIM hlkin\r
-DIM hlax, hlay, hlaz\r
-DIM mx, mz, my\r
-DIM desx, desz\r
-DIM desa\r
-\r
-DIM np, nl\r
-DIM an1, an2\r
-DIM tim\r
-DIM eta\r
-DIM mil\r
-DIM miin\r
-\r
-miin = 0\r
-mil = 25\r
-tim = 0\r
-eta = 1\r
-an1 = 0\r
-an2 = 0\r
-\r
-np = 0\r
-nl = 0\r
-RANDOMIZE 100\r
-s = 64\r
-\r
-14\r
-sp = s / 2\r
-FOR y = 0 TO 100 STEP s\r
- FOR x = 0 TO 100 STEP s\r
- c1 = POINT(x, y)\r
- c2 = POINT(x + s, y)\r
- c3 = POINT(x, y + s)\r
- c4 = POINT(x + s, y + s)\r
- c5 = (c1 + c2 + c3 + c4) / 4 + RND * s * 6 - sp * 7\r
- c6 = (c2 + c4) / 2 + RND * s * 6 - sp * 7\r
- c7 = (c3 + c4) / 2 + RND * s * 6 - sp * 7\r
- IF c5 > 50 THEN c5 = 50\r
- IF c5 < 0 THEN c5 = 0\r
- IF c6 > 50 THEN c6 = 50\r
- IF c6 < 0 THEN c6 = 0\r
- IF c7 > 50 THEN c7 = 50\r
- IF c7 < 0 THEN c7 = 0\r
- PSET (x + sp, y + sp), c5\r
- PSET (x + s, y + sp), c6\r
- PSET (x + sp, y + s), c7\r
- NEXT x\r
-NEXT y\r
-s = s / 2\r
-IF s > 1 THEN GOTO 14\r
-\r
-'a$ = INPUT$(1)\r
-\r
-FOR z = 1 TO 400 STEP 20\r
- FOR x = 1 TO 400 STEP 20\r
- np = np + 1\r
- px(np) = x\r
- py(np) = POINT(z / 20 + 10, x / 20 + 10) * 2\r
- pz(np) = z\r
- IF x > 1 THEN\r
- nl = nl + 1\r
- lin1(nl) = np\r
- lin2(nl) = np - 1\r
- linc(nl) = 1\r
- END IF\r
- IF z > 1 THEN\r
- nl = nl + 1\r
- lin1(nl) = np\r
- lin2(nl) = np - 20\r
- linc(nl) = 1\r
- END IF\r
- NEXT x\r
-NEXT z\r
-\r
-LINE (0, 0)-(319, 199), 0, BF\r
-\r
-SetPalette 0, 0, 0, 0\r
-SetPalette 0, 40, 10, 1\r
-SetPalette 0, 32, 64, 2\r
-SetPalette 50, 50, 0, 3\r
-SetPalette 64, 20, 0, 4\r
-\r
-mx = 200\r
-mz = 200\r
-kau = 1000\r
-hlax = 200\r
-hlay = 0\r
-hlaz = 200\r
-desx = 200\r
-desz = 200\r
-\r
-OPEN "data2.dat" FOR INPUT AS #1\r
-a = 0\r
-b = 0\r
-hlkin = np + 1\r
-\r
-15\r
-INPUT #1, x, y, z\r
-IF x = 999 THEN GOTO 16\r
-a = a + 1\r
-hlkx(a) = x\r
-hlky(a) = -y\r
-hlkz(a) = z\r
-GOTO 15\r
-\r
-16\r
-INPUT #1, x, y\r
-IF x = 999 THEN GOTO 17\r
-nl = nl + 1\r
-lin1(nl) = x + np + 1\r
-lin2(nl) = y + np + 1\r
-linc(nl) = 2\r
-GOTO 16\r
-\r
-17\r
-CLOSE #1\r
-np = np + a\r
-hlknu = a\r
-\r
-RANDOMIZE 10\r
-c = 3\r
-FOR a = 1 TO 25\r
- p = RND * 396 + 2\r
- x = px(p)\r
- z = pz(p)\r
- yy = py(p) - 4\r
-\r
- px(np + 1) = x - 5\r
- py(np + 1) = yy\r
- pz(np + 1) = z - 5\r
-\r
- px(np + 2) = x + 5\r
- py(np + 2) = yy\r
- pz(np + 2) = z - 5\r
-\r
- px(np + 3) = x + 5\r
- py(np + 3) = yy\r
- pz(np + 3) = z + 5\r
-\r
- px(np + 4) = x - 5\r
- py(np + 4) = yy\r
- pz(np + 4) = z + 5\r
-\r
- px(np + 5) = x\r
- py(np + 5) = yy - 5\r
- pz(np + 5) = z\r
-\r
- lin1(nl + 1) = np + 1\r
- lin2(nl + 1) = np + 2\r
- linc(nl + 1) = c\r
-\r
- lin1(nl + 2) = np + 2\r
- lin2(nl + 2) = np + 3\r
- linc(nl + 2) = c\r
-\r
- lin1(nl + 3) = np + 3\r
- lin2(nl + 3) = np + 4\r
- linc(nl + 3) = c\r
-\r
- lin1(nl + 4) = np + 4\r
- lin2(nl + 4) = np + 1\r
- linc(nl + 4) = c\r
-\r
- lin1(nl + 5) = np + 1\r
- lin2(nl + 5) = np + 5\r
- linc(nl + 5) = c\r
-\r
- lin1(nl + 6) = np + 2\r
- lin2(nl + 6) = np + 5\r
- linc(nl + 6) = c\r
-\r
- lin1(nl + 7) = np + 3\r
- lin2(nl + 7) = np + 5\r
- linc(nl + 7) = c\r
-\r
- lin1(nl + 8) = np + 4\r
- lin2(nl + 8) = np + 5\r
- linc(nl + 8) = c\r
-\r
- np = np + 5\r
- nl = nl + 8\r
-NEXT a\r
-\r
-10\r
-SOUND 0, 1\r
-IF INKEY$ <> "" THEN miin = 1\r
-IF miin > 150 THEN GOTO 13\r
-IF miin <> 0 THEN miin = miin + 7\r
-mx = hlax\r
-my = 50 - hlay - miin\r
-mz = hlaz\r
-\r
-SELECT CASE eta\r
-CASE 1\r
- desx = px(np)\r
- desz = pz(np)\r
- getan desx, desz, hlax, hlaz, desa\r
- IF desa - hlka > pi THEN desa = desa - (pi * 2)\r
- IF hlka - desa > pi THEN desa = desa + (pi * 2)\r
- eta = 2\r
- FOR a = nl - 7 TO nl\r
- linc(a) = 4\r
+ FOR a = 1 TO 50\r
+ SetPalette 0, 0, 0, a\r
NEXT a\r
-CASE 2\r
- a = desa - hlka\r
- IF desa = hlka THEN eta = 3\r
- IF a > .05 THEN a = .05\r
- IF a < -.05 THEN a = -.05\r
- hlka = hlka + a\r
-CASE 3\r
- x = desx - hlax\r
- z = desz - hlaz\r
- v = SQR(x * x + z * z)\r
- IF v < 5 THEN eta = 4\r
- v = v / 2\r
- hlax = hlax + x / v\r
- hlaz = hlaz + z / v\r
-CASE 4\r
- FOR a = np - 4 TO np\r
- py(a) = py(a) - 1\r
+\r
+ DIM px(0 TO 800)\r
+ DIM py(0 TO 800)\r
+ DIM pz(0 TO 800)\r
+ DIM lin1(0 TO 1000)\r
+ DIM lin2(0 TO 1000)\r
+ DIM linc(0 TO 1000)\r
+ DIM lbx1(1 TO 1000)\r
+ DIM lby1(1 TO 1000)\r
+ DIM lbx2(1 TO 1000)\r
+ DIM lby2(1 TO 1000)\r
+ DIM px1(0 TO 800)\r
+ DIM py1(0 TO 800)\r
+ DIM hlkx(1 TO 50)\r
+ DIM hlky(1 TO 50)\r
+ DIM hlkz(1 TO 50)\r
+ DIM hlka\r
+ DIM hlkr\r
+ DIM hlknu\r
+ DIM hlkin\r
+ DIM hlax, hlay, hlaz\r
+ DIM mx, mz, my\r
+ DIM desx, desz\r
+ DIM desa\r
+\r
+ DIM np, nl\r
+ DIM an1, an2\r
+ DIM tim\r
+ DIM eta\r
+ DIM mil\r
+ DIM miin\r
+\r
+ miin = 0\r
+ mil = 25\r
+ tim = 0\r
+ eta = 1\r
+ an1 = 0\r
+ an2 = 0\r
+\r
+ np = 0\r
+ nl = 0\r
+ RANDOMIZE 100\r
+ s = 64\r
+\r
+14:\r
+ sp = s / 2\r
+ FOR y = 0 TO 100 STEP s\r
+ FOR x = 0 TO 100 STEP s\r
+ c1 = POINT(x, y)\r
+ c2 = POINT(x + s, y)\r
+ c3 = POINT(x, y + s)\r
+ c4 = POINT(x + s, y + s)\r
+ c5 = (c1 + c2 + c3 + c4) / 4 + RND * s * 6 - sp * 7\r
+ c6 = (c2 + c4) / 2 + RND * s * 6 - sp * 7\r
+ c7 = (c3 + c4) / 2 + RND * s * 6 - sp * 7\r
+ IF c5 > 50 THEN c5 = 50\r
+ IF c5 < 0 THEN c5 = 0\r
+ IF c6 > 50 THEN c6 = 50\r
+ IF c6 < 0 THEN c6 = 0\r
+ IF c7 > 50 THEN c7 = 50\r
+ IF c7 < 0 THEN c7 = 0\r
+ PSET (x + sp, y + sp), c5\r
+ PSET (x + s, y + sp), c6\r
+ PSET (x + sp, y + s), c7\r
+ NEXT x\r
+ NEXT y\r
+ s = s / 2\r
+ IF s > 1 THEN GOTO 14\r
+\r
+ 'a$ = INPUT$(1)\r
+\r
+ FOR z = 1 TO 400 STEP 20\r
+ FOR x = 1 TO 400 STEP 20\r
+ np = np + 1\r
+ px(np) = x\r
+ py(np) = POINT(z / 20 + 10, x / 20 + 10) * 2\r
+ pz(np) = z\r
+ IF x > 1 THEN\r
+ nl = nl + 1\r
+ lin1(nl) = np\r
+ lin2(nl) = np - 1\r
+ linc(nl) = 1\r
+ END IF\r
+ IF z > 1 THEN\r
+ nl = nl + 1\r
+ lin1(nl) = np\r
+ lin2(nl) = np - 20\r
+ linc(nl) = 1\r
+ END IF\r
+ NEXT x\r
+ NEXT z\r
+\r
+ LINE (0, 0)-(319, 199), 0, BF\r
+\r
+ SetPalette 0, 0, 0, 0\r
+ SetPalette 0, 40, 10, 1\r
+ SetPalette 0, 32, 64, 2\r
+ SetPalette 50, 50, 0, 3\r
+ SetPalette 64, 20, 0, 4\r
+\r
+ mx = 200\r
+ mz = 200\r
+ kau = 1000\r
+ hlax = 200\r
+ hlay = 0\r
+ hlaz = 200\r
+ desx = 200\r
+ desz = 200\r
+\r
+ OPEN "data2.dat" FOR INPUT AS #1\r
+ a = 0\r
+ b = 0\r
+ hlkin = np + 1\r
+\r
+15:\r
+ INPUT #1, x, y, z\r
+ IF x = 999 THEN GOTO 16\r
+ a = a + 1\r
+ hlkx(a) = x\r
+ hlky(a) = -y\r
+ hlkz(a) = z\r
+ GOTO 15\r
+\r
+16:\r
+ INPUT #1, x, y\r
+ IF x = 999 THEN GOTO 17\r
+ nl = nl + 1\r
+ lin1(nl) = x + np + 1\r
+ lin2(nl) = y + np + 1\r
+ linc(nl) = 2\r
+ GOTO 16\r
+\r
+17:\r
+ CLOSE #1\r
+ np = np + a\r
+ hlknu = a\r
+\r
+ RANDOMIZE 10\r
+ c = 3\r
+ FOR a = 1 TO 25\r
+ p = RND * 396 + 2\r
+ x = px(p)\r
+ z = pz(p)\r
+ yy = py(p) - 4\r
+\r
+ px(np + 1) = x - 5\r
+ py(np + 1) = yy\r
+ pz(np + 1) = z - 5\r
+\r
+ px(np + 2) = x + 5\r
+ py(np + 2) = yy\r
+ pz(np + 2) = z - 5\r
+\r
+ px(np + 3) = x + 5\r
+ py(np + 3) = yy\r
+ pz(np + 3) = z + 5\r
+\r
+ px(np + 4) = x - 5\r
+ py(np + 4) = yy\r
+ pz(np + 4) = z + 5\r
+\r
+ px(np + 5) = x\r
+ py(np + 5) = yy - 5\r
+ pz(np + 5) = z\r
+\r
+ lin1(nl + 1) = np + 1\r
+ lin2(nl + 1) = np + 2\r
+ linc(nl + 1) = c\r
+\r
+ lin1(nl + 2) = np + 2\r
+ lin2(nl + 2) = np + 3\r
+ linc(nl + 2) = c\r
+\r
+ lin1(nl + 3) = np + 3\r
+ lin2(nl + 3) = np + 4\r
+ linc(nl + 3) = c\r
+\r
+ lin1(nl + 4) = np + 4\r
+ lin2(nl + 4) = np + 1\r
+ linc(nl + 4) = c\r
+\r
+ lin1(nl + 5) = np + 1\r
+ lin2(nl + 5) = np + 5\r
+ linc(nl + 5) = c\r
+\r
+ lin1(nl + 6) = np + 2\r
+ lin2(nl + 6) = np + 5\r
+ linc(nl + 6) = c\r
+\r
+ lin1(nl + 7) = np + 3\r
+ lin2(nl + 7) = np + 5\r
+ linc(nl + 7) = c\r
+\r
+ lin1(nl + 8) = np + 4\r
+ lin2(nl + 8) = np + 5\r
+ linc(nl + 8) = c\r
+\r
+ np = np + 5\r
+ nl = nl + 8\r
NEXT a\r
- IF py(np) < 3 - hlay THEN\r
+\r
+10:\r
+ SOUND 0, 1\r
+ IF INKEY$ <> "" THEN miin = 1\r
+ IF miin > 150 THEN GOTO 13\r
+ IF miin <> 0 THEN miin = miin + 7\r
+ mx = hlax\r
+ my = 50 - hlay - miin\r
+ mz = hlaz\r
+\r
+ SELECT CASE eta\r
+ CASE 1\r
+ desx = px(np)\r
+ desz = pz(np)\r
+ getan desx, desz, hlax, hlaz, desa\r
+ IF desa - hlka > pi THEN desa = desa - (pi * 2)\r
+ IF hlka - desa > pi THEN desa = desa + (pi * 2)\r
+ eta = 2\r
FOR a = nl - 7 TO nl\r
- LINE (lbx1(a), lby1(a))-(lbx2(a), lby2(a)), 0\r
+ linc(a) = 4\r
NEXT a\r
- np = np - 5\r
- nl = nl - 8\r
- mil = mil - 1\r
- eta = 6\r
- IF mil <= 0 THEN eta = 7\r
- END IF\r
-CASE 6\r
- eta = 5\r
-CASE 5\r
- eta = 1\r
-END SELECT\r
-\r
-y = 60 - py(INT((hlaz + 10) / 20) * 20 + INT((hlax + 10) / 20))\r
-IF hlay > y + 5 THEN hlay = hlay - 1\r
-IF hlay < y THEN hlay = hlay + 1\r
-IF hlay > y + 25 THEN hlay = hlay - 1: ' SOUND 1000, 1\r
-IF hlay < y - 20 THEN hlay = hlay + 1: ' SOUND 1000, 1\r
-\r
-s1 = SIN(hlka)\r
-c1 = COS(hlka)\r
-FOR a = 0 TO hlknu - 5\r
- x = hlkx(a + 1)\r
- z = hlkz(a + 1)\r
- px(a + hlkin) = x * s1 + z * c1 + hlax\r
- py(a + hlkin) = hlky(a + 1) - hlay\r
- pz(a + hlkin) = z * s1 - x * c1 + hlaz\r
-NEXT a\r
-\r
-hlkr = hlkr + .5\r
-s1 = SIN(hlkr)\r
-c1 = COS(hlkr)\r
-FOR a = hlknu - 4 TO hlknu - 1\r
- x = hlkx(a + 1)\r
- z = hlkz(a + 1)\r
- px(a + hlkin) = x * s1 + z * c1 + hlax\r
- py(a + hlkin) = hlky(a + 1) - hlay\r
- pz(a + hlkin) = z * s1 - x * c1 + hlaz\r
-NEXT a\r
-\r
-tim = tim + 1\r
-\r
-an1 = an1 + SIN(tim / 100) / 20\r
-an2 = SIN(tim / 42) * .3 + 1.15\r
-\r
-s1 = SIN(an1)\r
-c1 = COS(an1)\r
-s2 = SIN(an2)\r
-c2 = COS(an2)\r
-\r
-FOR a = 0 TO np\r
- x = px(a) - mx\r
- y = py(a) - my\r
- z = pz(a) - mz\r
-\r
-z2 = z * s1 + x * c1\r
-x1 = x * s1 - z * c1\r
-\r
-z1 = z2 * s2 + y * c2\r
-y1 = y * s2 - z2 * c2\r
-\r
-\r
- z1 = z1 + kau\r
- IF z1 < 1 THEN px1(a) = -1: GOTO 11\r
- x1 = x1 / z1 * 74 * 2\r
- y1 = y1 / z1 * 65 * 2\r
-\r
- px1(a) = x1 + 160\r
- py1(a) = y1 + 80\r
-11\r
-NEXT a\r
-\r
-FOR a = 1 TO nl\r
- l1 = lin1!(a)\r
- l2 = lin2!(a)\r
- x1 = px1(l1)\r
- x2 = px1(l2)\r
- LINE (lbx1(a), lby1(a))-(lbx2(a), lby2(a)), 0\r
- IF (x1 = -1) OR (x2 = -1) THEN GOTO 12\r
- y1 = py1(l1)\r
- y2 = py1(l2)\r
- LINE (x1, y1)-(x2, y2), linc(a)\r
- lbx1(a) = x1\r
- lby1(a) = y1\r
- lbx2(a) = x2\r
- lby2(a) = y2\r
-12\r
-NEXT a\r
-IF kau > 200 THEN kau = kau - 10\r
-IF tim < 28000 THEN GOTO 10\r
-13\r
-END SUB\r
+ CASE 2\r
+ a = desa - hlka\r
+ IF desa = hlka THEN eta = 3\r
+ IF a > .05 THEN a = .05\r
+ IF a < -.05 THEN a = -.05\r
+ hlka = hlka + a\r
+ CASE 3\r
+ x = desx - hlax\r
+ z = desz - hlaz\r
+ v = SQR(x * x + z * z)\r
+ IF v < 5 THEN eta = 4\r
+ v = v / 2\r
+ hlax = hlax + x / v\r
+ hlaz = hlaz + z / v\r
+ CASE 4\r
+ FOR a = np - 4 TO np\r
+ py(a) = py(a) - 1\r
+ NEXT a\r
+ IF py(np) < 3 - hlay THEN\r
+ FOR a = nl - 7 TO nl\r
+ LINE (lbx1(a), lby1(a))-(lbx2(a), lby2(a)), 0\r
+ NEXT a\r
+ np = np - 5\r
+ nl = nl - 8\r
+ mil = mil - 1\r
+ eta = 6\r
+ IF mil <= 0 THEN eta = 7\r
+ END IF\r
+ CASE 6\r
+ eta = 5\r
+ CASE 5\r
+ eta = 1\r
+ END SELECT\r
+\r
+ y = 60 - py(INT((hlaz + 10) / 20) * 20 + INT((hlax + 10) / 20))\r
+ IF hlay > y + 5 THEN hlay = hlay - 1\r
+ IF hlay < y THEN hlay = hlay + 1\r
+ IF hlay > y + 25 THEN hlay = hlay - 1: ' SOUND 1000, 1\r
+ IF hlay < y - 20 THEN hlay = hlay + 1: ' SOUND 1000, 1\r
+\r
+ s1 = SIN(hlka)\r
+ c1 = COS(hlka)\r
+ FOR a = 0 TO hlknu - 5\r
+ x = hlkx(a + 1)\r
+ z = hlkz(a + 1)\r
+ px(a + hlkin) = x * s1 + z * c1 + hlax\r
+ py(a + hlkin) = hlky(a + 1) - hlay\r
+ pz(a + hlkin) = z * s1 - x * c1 + hlaz\r
+ NEXT a\r
\r
-SUB Scene9\r
+ hlkr = hlkr + .5\r
+ s1 = SIN(hlkr)\r
+ c1 = COS(hlkr)\r
+ FOR a = hlknu - 4 TO hlknu - 1\r
+ x = hlkx(a + 1)\r
+ z = hlkz(a + 1)\r
+ px(a + hlkin) = x * s1 + z * c1 + hlax\r
+ py(a + hlkin) = hlky(a + 1) - hlay\r
+ pz(a + hlkin) = z * s1 - x * c1 + hlaz\r
+ NEXT a\r
+\r
+ tim = tim + 1\r
+\r
+ an1 = an1 + SIN(tim / 100) / 20\r
+ an2 = SIN(tim / 42) * .3 + 1.15\r
+\r
+ s1 = SIN(an1)\r
+ c1 = COS(an1)\r
+ s2 = SIN(an2)\r
+ c2 = COS(an2)\r
+\r
+ FOR a = 0 TO np\r
+ x = px(a) - mx\r
+ y = py(a) - my\r
+ z = pz(a) - mz\r
+\r
+ z2 = z * s1 + x * c1\r
+ x1 = x * s1 - z * c1\r
\r
-RANDOMIZE 45\r
-mkback\r
+ z1 = z2 * s2 + y * c2\r
+ y1 = y * s2 - z2 * c2\r
\r
-box 30, 50, 290, 80\r
+ z1 = z1 + kau\r
+ IF z1 < 1 THEN px1(a) = -1: GOTO 11\r
+ x1 = x1 / z1 * 74 * 2\r
+ y1 = y1 / z1 * 65 * 2\r
\r
-SetPalette 32, 64, 32, 250\r
-y = -8\r
-PrintText 30, 70 + y, 1, 250, " Thank you for attention!"\r
-inpur\r
+ px1(a) = x1 + 160\r
+ py1(a) = y1 + 80\r
+11:\r
+ NEXT a\r
+\r
+ FOR a = 1 TO nl\r
+ l1 = lin1!(a)\r
+ l2 = lin2!(a)\r
+ x1 = px1(l1)\r
+ x2 = px1(l2)\r
+ LINE (lbx1(a), lby1(a))-(lbx2(a), lby2(a)), 0\r
+ IF (x1 = -1) OR (x2 = -1) THEN GOTO 12\r
+ y1 = py1(l1)\r
+ y2 = py1(l2)\r
+ LINE (x1, y1)-(x2, y2), linc(a)\r
+ lbx1(a) = x1\r
+ lby1(a) = y1\r
+ lbx2(a) = x2\r
+ lby2(a) = y2\r
+12:\r
+ NEXT a\r
+ IF kau > 200 THEN kau = kau - 10\r
+ IF tim < 28000 THEN GOTO 10\r
+13:\r
+END SUB\r
\r
+SUB Scene9\r
+ RANDOMIZE 45\r
+ mkback\r
+\r
+ box 30, 50, 290, 80\r
+\r
+ SetPalette 32, 64, 32, 250\r
+ y = -8\r
+ PrintText 30, 70 + y, 1, 250, " Thank you for attention!"\r
+ inpur\r
END SUB\r
\r
' Subroutine to set color palette\r
END SUB\r
\r
SUB start\r
-SCREEN 13\r
-pi = 3.141592\r
-pii = pi\r
-fac = 360 / (pi * 2)\r
-InitializeFont\r
+ SCREEN 13\r
+ pi = 3.141592\r
+ pii = pi\r
+ fac = 360 / (pi * 2)\r
+ InitializeFont\r
END SUB\r
-\r