+CHDIR ".\qbasicapps\math\3D graph\"\r
+\r
+\r
' 3D formula explorer\r
' made by Svjatoslav Agejenko\r
' in 2002\r
-' H-Page: svjatoslav.eu\r
-' E-Mail: svjatoslavagejenko@gmail.com\r
+' homepage: svjatoslav.eu\r
+' email: svjatoslav@svjatoslav.eu\r
\r
' use:\r
' cursor keys - move around\r
d = 0\r
e = 0\r
FOR x = -500 TO 500 STEP 50\r
-FOR z = -500 TO 500 STEP 50\r
-\r
-d = d + 1\r
-xn(nump + d) = x\r
-valem x / 50, z / 50, y\r
-yn(nump + d) = y * 50\r
-zn(nump + d) = z\r
-IF z > -500 THEN\r
-e = e + 1\r
-point1(numl + e) = nump + d\r
-point2(numl + e) = nump + d - 1\r
-col(numl + e) = c\r
-END IF\r
-\r
-IF x > -500 THEN\r
-e = e + 1\r
-point1(numl + e) = nump + d\r
-point2(numl + e) = nump + d - 21\r
-col(numl + e) = c\r
-END IF\r
-\r
-NEXT z\r
+ FOR z = -500 TO 500 STEP 50\r
+\r
+ d = d + 1\r
+ xn(nump + d) = x\r
+ valem x / 50, z / 50, y\r
+ yn(nump + d) = y * 50\r
+ zn(nump + d) = z\r
+ IF z > -500 THEN\r
+ e = e + 1\r
+ point1(numl + e) = nump + d\r
+ point2(numl + e) = nump + d - 1\r
+ col(numl + e) = c\r
+ END IF\r
+\r
+ IF x > -500 THEN\r
+ e = e + 1\r
+ point1(numl + e) = nump + d\r
+ point2(numl + e) = nump + d - 21\r
+ col(numl + e) = c\r
+ END IF\r
+\r
+ NEXT z\r
NEXT x\r
nump = nump + d\r
numl = numl + e\r
d = 0\r
e = 0\r
FOR z = -500 TO 500 STEP 100\r
-FOR y = -500 TO 500 STEP 100\r
-\r
-d = d + 1\r
-xn(nump + d) = x1\r
-yn(nump + d) = y1 + y\r
-zn(nump + d) = z1 + z\r
-IF y > -500 THEN\r
-e = e + 1\r
-point1(numl + e) = nump + d\r
-point2(numl + e) = nump + d - 1\r
-col(numl + e) = c\r
-END IF\r
-\r
-IF z > -500 THEN\r
-e = e + 1\r
-point1(numl + e) = nump + d\r
-point2(numl + e) = nump + d - 11\r
-col(numl + e) = c\r
-END IF\r
-\r
-NEXT y\r
+ FOR y = -500 TO 500 STEP 100\r
+\r
+ d = d + 1\r
+ xn(nump + d) = x1\r
+ yn(nump + d) = y1 + y\r
+ zn(nump + d) = z1 + z\r
+ IF y > -500 THEN\r
+ e = e + 1\r
+ point1(numl + e) = nump + d\r
+ point2(numl + e) = nump + d - 1\r
+ col(numl + e) = c\r
+ END IF\r
+\r
+ IF z > -500 THEN\r
+ e = e + 1\r
+ point1(numl + e) = nump + d\r
+ point2(numl + e) = nump + d - 11\r
+ col(numl + e) = c\r
+ END IF\r
+\r
+ NEXT y\r
NEXT z\r
nump = nump + d\r
numl = numl + e\r
d = 0\r
e = 0\r
FOR x = -500 TO 500 STEP 100\r
-FOR y = -500 TO 500 STEP 100\r
-\r
-d = d + 1\r
-xn(nump + d) = x1 + x\r
-yn(nump + d) = y1 + y\r
-zn(nump + d) = z1\r
-IF y > -500 THEN\r
-e = e + 1\r
-point1(numl + e) = nump + d\r
-point2(numl + e) = nump + d - 1\r
-col(numl + e) = c\r
-END IF\r
-\r
-IF x > -500 THEN\r
-e = e + 1\r
-point1(numl + e) = nump + d\r
-point2(numl + e) = nump + d - 11\r
-col(numl + e) = c\r
-END IF\r
-\r
-NEXT y\r
+ FOR y = -500 TO 500 STEP 100\r
+\r
+ d = d + 1\r
+ xn(nump + d) = x1 + x\r
+ yn(nump + d) = y1 + y\r
+ zn(nump + d) = z1\r
+ IF y > -500 THEN\r
+ e = e + 1\r
+ point1(numl + e) = nump + d\r
+ point2(numl + e) = nump + d - 1\r
+ col(numl + e) = c\r
+ END IF\r
+\r
+ IF x > -500 THEN\r
+ e = e + 1\r
+ point1(numl + e) = nump + d\r
+ point2(numl + e) = nump + d - 11\r
+ col(numl + e) = c\r
+ END IF\r
+\r
+ NEXT y\r
NEXT x\r
nump = nump + d\r
numl = numl + e\r
d = 0\r
e = 0\r
FOR x = -500 TO 500 STEP 100\r
-FOR z = -500 TO 500 STEP 100\r
-\r
-d = d + 1\r
-xn(nump + d) = x1 + x\r
-yn(nump + d) = y1 + y\r
-zn(nump + d) = z\r
-IF z > -500 THEN\r
-e = e + 1\r
-point1(numl + e) = nump + d\r
-point2(numl + e) = nump + d - 1\r
-col(numl + e) = c\r
-END IF\r
-\r
-IF x > -500 THEN\r
-e = e + 1\r
-point1(numl + e) = nump + d\r
-point2(numl + e) = nump + d - 11\r
-col(numl + e) = c\r
-END IF\r
-\r
-NEXT z\r
+ FOR z = -500 TO 500 STEP 100\r
+\r
+ d = d + 1\r
+ xn(nump + d) = x1 + x\r
+ yn(nump + d) = y1 + y\r
+ zn(nump + d) = z\r
+ IF z > -500 THEN\r
+ e = e + 1\r
+ point1(numl + e) = nump + d\r
+ point2(numl + e) = nump + d - 1\r
+ col(numl + e) = c\r
+ END IF\r
+\r
+ IF x > -500 THEN\r
+ e = e + 1\r
+ point1(numl + e) = nump + d\r
+ point2(numl + e) = nump + d - 11\r
+ col(numl + e) = c\r
+ END IF\r
+\r
+ NEXT z\r
NEXT x\r
nump = nump + d\r
numl = numl + e\r
\r
FOR a = 1 TO nump\r
\r
-xo = xn(a) - myx\r
-yo = -yn(a) - myy\r
-zo = zn(a) - myz\r
+ xo = xn(a) - myx\r
+ yo = -yn(a) - myy\r
+ zo = zn(a) - myz\r
\r
-x1 = (xo * C1 - zo * S1)\r
-z1 = (xo * S1 + zo * C1)\r
+ x1 = (xo * C1 - zo * S1)\r
+ z1 = (xo * S1 + zo * C1)\r
\r
-y1 = (yo * C2 - z1 * S2)\r
-z2 = (yo * S2 + z1 * C2)\r
+ y1 = (yo * C2 - z1 * S2)\r
+ z2 = (yo * S2 + z1 * C2)\r
\r
\r
-xo(a) = x(a)\r
-yo(a) = y(a)\r
-IF z2 < 20 THEN\r
-x(a) = -1\r
-ELSE\r
-x(a) = 320 + (x1 / z2 * 500)\r
-y(a) = 240 + (y1 / z2 * 500)\r
-END IF\r
+ xo(a) = x(a)\r
+ yo(a) = y(a)\r
+ IF z2 < 20 THEN\r
+ x(a) = -1\r
+ ELSE\r
+ x(a) = 320 + (x1 / z2 * 500)\r
+ y(a) = 240 + (y1 / z2 * 500)\r
+ END IF\r
NEXT\r
\r
\r
FOR a = 1 TO numl\r
-p1 = point1(a)\r
-p2 = point2(a)\r
-IF xo(p1) = -1 OR xo(p2) = -1 THEN ELSE LINE (xo(p1), yo(p1))-(xo(p2), yo(p2)), 0\r
+ p1 = point1(a)\r
+ p2 = point2(a)\r
+ IF xo(p1) = -1 OR xo(p2) = -1 THEN ELSE LINE (xo(p1), yo(p1))-(xo(p2), yo(p2)), 0\r
\r
-IF x(p1) = -1 OR x(p2) = -1 THEN ELSE LINE (x(p1), y(p1))-(x(p2), y(p2)), col(a)\r
+ IF x(p1) = -1 OR x(p2) = -1 THEN ELSE LINE (x(p1), y(p1))-(x(p2), y(p2)), col(a)\r
NEXT\r
\r
\r
K$ = INKEY$\r
IF K$ <> "" THEN\r
\r
-SELECT CASE K$\r
+ SELECT CASE K$\r
\r
-CASE CHR$(0) + "P"\r
-mye = mye - 3\r
+ CASE CHR$(0) + "P"\r
+ mye = mye - 3\r
\r
-CASE CHR$(0) + "H"\r
-mye = mye + 3\r
+ CASE CHR$(0) + "H"\r
+ mye = mye + 3\r
\r
-CASE CHR$(0) + "M"\r
-myk = myk + 3\r
+ CASE CHR$(0) + "M"\r
+ myk = myk + 3\r
\r
-CASE CHR$(0) + "K"\r
-myk = myk - 3\r
+ CASE CHR$(0) + "K"\r
+ myk = myk - 3\r
\r
-CASE "+"\r
-myyp = myyp + 5\r
+ CASE "+"\r
+ myyp = myyp + 5\r
\r
-CASE "-"\r
-myyp = myyp - 5\r
+ CASE "-"\r
+ myyp = myyp - 5\r
\r
-CASE "6"\r
-d1 = d1 + .01\r
+ CASE "6"\r
+ d1 = d1 + .01\r
\r
-CASE "4"\r
-d1 = d1 - .01\r
+ CASE "4"\r
+ d1 = d1 - .01\r
\r
-CASE "8"\r
-d2 = d2 - .01\r
+ CASE "8"\r
+ d2 = d2 - .01\r
\r
-CASE "2"\r
-d2 = d2 + .01\r
+ CASE "2"\r
+ d2 = d2 + .01\r
\r
\r
-CASE " "\r
-d1 = d1 / 2\r
-d2 = d2 / 2\r
-d3 = d3 / 2\r
-mye = mye / 2\r
-myk = myk / 2\r
-myyp = myyp / 2\r
-CASE "q"\r
-SYSTEM\r
+ CASE " "\r
+ d1 = d1 / 2\r
+ d2 = d2 / 2\r
+ d3 = d3 / 2\r
+ mye = mye / 2\r
+ myk = myk / 2\r
+ myyp = myyp / 2\r
+ CASE "q"\r
+ SYSTEM\r
\r
-CASE CHR$(27)\r
-SYSTEM\r
+ CASE CHR$(27)\r
+ SYSTEM\r
\r
-END SELECT\r
+ END SELECT\r
END IF\r
\r
+_LIMIT (30)\r
+\r
GOTO 1\r
END SUB\r
\r
CLS\r
\r
FOR a = 1 TO 4000\r
-col(a) = 15\r
+ col(a) = 15\r
NEXT a\r
\r
nump = 0\r
z = 0\r
v = SQR(x * x + y * y) ' v = distance from center, some formulas needs it.\r
\r
-z = z + SIN(x + y) * SIN(tm / 10) ' diagonal lines\r
-z = z + (SQR((15 + v) * (15 - v)) - 10) ' top of the ball\r
- ' here I mixed 2 formulas.\r
+z = z + SIN(x + y) * SIN(tm / 10) ' diagonal lines\r
+z = z + (SQR((15 + v) * (15 - v)) - 10) ' top of the ball\r
+' here I mixed 2 formulas.\r
\r
'z = z + RND * 1 ' noise\r
'z = z + SIN((y + tm) / 2) ' forward moving wave\r