* fixed some email addresses
[qbasicapps.git] / math / 3D graph / 3dgraph.bas
old mode 100755 (executable)
new mode 100644 (file)
index b867eeb..bfb4074
@@ -1,8 +1,11 @@
+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
@@ -112,28 +115,28 @@ c = 14
 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
@@ -146,27 +149,27 @@ c = 3
 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
@@ -180,27 +183,27 @@ c = 3
 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
@@ -215,27 +218,27 @@ c = 3
 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
@@ -269,89 +272,91 @@ C2 = COS(Deg2): S2 = SIN(Deg2)
  \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
@@ -360,7 +365,7 @@ SCREEN 12
 CLS\r
 \r
 FOR a = 1 TO 4000\r
-col(a) = 15\r
+    col(a) = 15\r
 NEXT a\r
 \r
 nump = 0\r
@@ -375,9 +380,9 @@ SUB valem (x, y, z)
 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