X-Git-Url: http://www2.svjatoslav.eu/gitweb/?p=qbasicapps.git;a=blobdiff_plain;f=math%2F3D%20graph%2F3dgraph.bas;fp=math%2F3D%20graph%2F3dgraph.bas;h=bfb40741620cfc99ba4a55434f2e62122f190f2b;hp=b867eebab29681c1fc869d4c697590ee4111f391;hb=08a50b7a860f6aa39f58108a07e2fc13e46260b9;hpb=68c9ea9c1b1c03a3d38bd585f0bdeee6371cb05b diff --git a/math/3D graph/3dgraph.bas b/math/3D graph/3dgraph.bas old mode 100755 new mode 100644 index b867eeb..bfb4074 --- a/math/3D graph/3dgraph.bas +++ b/math/3D graph/3dgraph.bas @@ -1,8 +1,11 @@ +CHDIR ".\qbasicapps\math\3D graph\" + + ' 3D formula explorer ' made by Svjatoslav Agejenko ' in 2002 -' H-Page: svjatoslav.eu -' E-Mail: svjatoslavagejenko@gmail.com +' homepage: svjatoslav.eu +' email: svjatoslav@svjatoslav.eu ' use: ' cursor keys - move around @@ -112,28 +115,28 @@ c = 14 d = 0 e = 0 FOR x = -500 TO 500 STEP 50 -FOR z = -500 TO 500 STEP 50 - -d = d + 1 -xn(nump + d) = x -valem x / 50, z / 50, y -yn(nump + d) = y * 50 -zn(nump + d) = z -IF z > -500 THEN -e = e + 1 -point1(numl + e) = nump + d -point2(numl + e) = nump + d - 1 -col(numl + e) = c -END IF - -IF x > -500 THEN -e = e + 1 -point1(numl + e) = nump + d -point2(numl + e) = nump + d - 21 -col(numl + e) = c -END IF - -NEXT z + FOR z = -500 TO 500 STEP 50 + + d = d + 1 + xn(nump + d) = x + valem x / 50, z / 50, y + yn(nump + d) = y * 50 + zn(nump + d) = z + IF z > -500 THEN + e = e + 1 + point1(numl + e) = nump + d + point2(numl + e) = nump + d - 1 + col(numl + e) = c + END IF + + IF x > -500 THEN + e = e + 1 + point1(numl + e) = nump + d + point2(numl + e) = nump + d - 21 + col(numl + e) = c + END IF + + NEXT z NEXT x nump = nump + d numl = numl + e @@ -146,27 +149,27 @@ c = 3 d = 0 e = 0 FOR z = -500 TO 500 STEP 100 -FOR y = -500 TO 500 STEP 100 - -d = d + 1 -xn(nump + d) = x1 -yn(nump + d) = y1 + y -zn(nump + d) = z1 + z -IF y > -500 THEN -e = e + 1 -point1(numl + e) = nump + d -point2(numl + e) = nump + d - 1 -col(numl + e) = c -END IF - -IF z > -500 THEN -e = e + 1 -point1(numl + e) = nump + d -point2(numl + e) = nump + d - 11 -col(numl + e) = c -END IF - -NEXT y + FOR y = -500 TO 500 STEP 100 + + d = d + 1 + xn(nump + d) = x1 + yn(nump + d) = y1 + y + zn(nump + d) = z1 + z + IF y > -500 THEN + e = e + 1 + point1(numl + e) = nump + d + point2(numl + e) = nump + d - 1 + col(numl + e) = c + END IF + + IF z > -500 THEN + e = e + 1 + point1(numl + e) = nump + d + point2(numl + e) = nump + d - 11 + col(numl + e) = c + END IF + + NEXT y NEXT z nump = nump + d numl = numl + e @@ -180,27 +183,27 @@ c = 3 d = 0 e = 0 FOR x = -500 TO 500 STEP 100 -FOR y = -500 TO 500 STEP 100 - -d = d + 1 -xn(nump + d) = x1 + x -yn(nump + d) = y1 + y -zn(nump + d) = z1 -IF y > -500 THEN -e = e + 1 -point1(numl + e) = nump + d -point2(numl + e) = nump + d - 1 -col(numl + e) = c -END IF - -IF x > -500 THEN -e = e + 1 -point1(numl + e) = nump + d -point2(numl + e) = nump + d - 11 -col(numl + e) = c -END IF - -NEXT y + FOR y = -500 TO 500 STEP 100 + + d = d + 1 + xn(nump + d) = x1 + x + yn(nump + d) = y1 + y + zn(nump + d) = z1 + IF y > -500 THEN + e = e + 1 + point1(numl + e) = nump + d + point2(numl + e) = nump + d - 1 + col(numl + e) = c + END IF + + IF x > -500 THEN + e = e + 1 + point1(numl + e) = nump + d + point2(numl + e) = nump + d - 11 + col(numl + e) = c + END IF + + NEXT y NEXT x nump = nump + d numl = numl + e @@ -215,27 +218,27 @@ c = 3 d = 0 e = 0 FOR x = -500 TO 500 STEP 100 -FOR z = -500 TO 500 STEP 100 - -d = d + 1 -xn(nump + d) = x1 + x -yn(nump + d) = y1 + y -zn(nump + d) = z -IF z > -500 THEN -e = e + 1 -point1(numl + e) = nump + d -point2(numl + e) = nump + d - 1 -col(numl + e) = c -END IF - -IF x > -500 THEN -e = e + 1 -point1(numl + e) = nump + d -point2(numl + e) = nump + d - 11 -col(numl + e) = c -END IF - -NEXT z + FOR z = -500 TO 500 STEP 100 + + d = d + 1 + xn(nump + d) = x1 + x + yn(nump + d) = y1 + y + zn(nump + d) = z + IF z > -500 THEN + e = e + 1 + point1(numl + e) = nump + d + point2(numl + e) = nump + d - 1 + col(numl + e) = c + END IF + + IF x > -500 THEN + e = e + 1 + point1(numl + e) = nump + d + point2(numl + e) = nump + d - 11 + col(numl + e) = c + END IF + + NEXT z NEXT x nump = nump + d numl = numl + e @@ -269,89 +272,91 @@ C2 = COS(Deg2): S2 = SIN(Deg2) FOR a = 1 TO nump -xo = xn(a) - myx -yo = -yn(a) - myy -zo = zn(a) - myz + xo = xn(a) - myx + yo = -yn(a) - myy + zo = zn(a) - myz -x1 = (xo * C1 - zo * S1) -z1 = (xo * S1 + zo * C1) + x1 = (xo * C1 - zo * S1) + z1 = (xo * S1 + zo * C1) -y1 = (yo * C2 - z1 * S2) -z2 = (yo * S2 + z1 * C2) + y1 = (yo * C2 - z1 * S2) + z2 = (yo * S2 + z1 * C2) -xo(a) = x(a) -yo(a) = y(a) -IF z2 < 20 THEN -x(a) = -1 -ELSE -x(a) = 320 + (x1 / z2 * 500) -y(a) = 240 + (y1 / z2 * 500) -END IF + xo(a) = x(a) + yo(a) = y(a) + IF z2 < 20 THEN + x(a) = -1 + ELSE + x(a) = 320 + (x1 / z2 * 500) + y(a) = 240 + (y1 / z2 * 500) + END IF NEXT FOR a = 1 TO numl -p1 = point1(a) -p2 = point2(a) -IF xo(p1) = -1 OR xo(p2) = -1 THEN ELSE LINE (xo(p1), yo(p1))-(xo(p2), yo(p2)), 0 + p1 = point1(a) + p2 = point2(a) + IF xo(p1) = -1 OR xo(p2) = -1 THEN ELSE LINE (xo(p1), yo(p1))-(xo(p2), yo(p2)), 0 -IF x(p1) = -1 OR x(p2) = -1 THEN ELSE LINE (x(p1), y(p1))-(x(p2), y(p2)), col(a) + IF x(p1) = -1 OR x(p2) = -1 THEN ELSE LINE (x(p1), y(p1))-(x(p2), y(p2)), col(a) NEXT K$ = INKEY$ IF K$ <> "" THEN -SELECT CASE K$ + SELECT CASE K$ -CASE CHR$(0) + "P" -mye = mye - 3 + CASE CHR$(0) + "P" + mye = mye - 3 -CASE CHR$(0) + "H" -mye = mye + 3 + CASE CHR$(0) + "H" + mye = mye + 3 -CASE CHR$(0) + "M" -myk = myk + 3 + CASE CHR$(0) + "M" + myk = myk + 3 -CASE CHR$(0) + "K" -myk = myk - 3 + CASE CHR$(0) + "K" + myk = myk - 3 -CASE "+" -myyp = myyp + 5 + CASE "+" + myyp = myyp + 5 -CASE "-" -myyp = myyp - 5 + CASE "-" + myyp = myyp - 5 -CASE "6" -d1 = d1 + .01 + CASE "6" + d1 = d1 + .01 -CASE "4" -d1 = d1 - .01 + CASE "4" + d1 = d1 - .01 -CASE "8" -d2 = d2 - .01 + CASE "8" + d2 = d2 - .01 -CASE "2" -d2 = d2 + .01 + CASE "2" + d2 = d2 + .01 -CASE " " -d1 = d1 / 2 -d2 = d2 / 2 -d3 = d3 / 2 -mye = mye / 2 -myk = myk / 2 -myyp = myyp / 2 -CASE "q" -SYSTEM + CASE " " + d1 = d1 / 2 + d2 = d2 / 2 + d3 = d3 / 2 + mye = mye / 2 + myk = myk / 2 + myyp = myyp / 2 + CASE "q" + SYSTEM -CASE CHR$(27) -SYSTEM + CASE CHR$(27) + SYSTEM -END SELECT + END SELECT END IF +_LIMIT (30) + GOTO 1 END SUB @@ -360,7 +365,7 @@ SCREEN 12 CLS FOR a = 1 TO 4000 -col(a) = 15 + col(a) = 15 NEXT a nump = 0 @@ -375,9 +380,9 @@ SUB valem (x, y, z) z = 0 v = SQR(x * x + y * y) ' v = distance from center, some formulas needs it. -z = z + SIN(x + y) * SIN(tm / 10) ' diagonal lines -z = z + (SQR((15 + v) * (15 - v)) - 10) ' top of the ball - ' here I mixed 2 formulas. +z = z + SIN(x + y) * SIN(tm / 10) ' diagonal lines +z = z + (SQR((15 + v) * (15 - v)) - 10) ' top of the ball +' here I mixed 2 formulas. 'z = z + RND * 1 ' noise 'z = z + SIN((y + tm) / 2) ' forward moving wave