' Material simulation, simulates shockwaves propagation in gas.\r
' made by Svjatoslav Agejenko\r
' in 2003\r
-' H-Page: svjatoslav.eu\r
-' E-Mail: svjatoslavagejenko@gmail.com\r
+' homepage: svjatoslav.eu\r
+' email: svjatoslav@svjatoslav.eu\r
\r
DECLARE SUB saveit ()\r
DECLARE SUB playit ()\r
'disp\r
\r
FOR y = 2 TO 99\r
-FOR x = 2 TO 99\r
-IF press(x, y) = wal THEN spdx(x - 1, y) = 0: spdy(x, y - 1) = 0: spdx(x, y) = 0: spdy(x, y) = 0: GOTO 3\r
-spdy(x, y) = spdy(x, y) - (press(x, y) / 500) ' gravitation\r
-\r
-IF press(x + 1, y) = wal THEN spdx(x, y) = 0: GOTO 2\r
-spdx(x, y) = (press(x + 1, y) - press(x, y)) / 20 + spdx(x, y)\r
-2\r
-IF press(x, y + 1) = wal THEN spdy(x, y) = 0: GOTO 3\r
-spdy(x, y) = (press(x, y + 1) - press(x, y)) / 20 + spdy(x, y)\r
-3\r
-NEXT x\r
+ FOR x = 2 TO 99\r
+ IF press(x, y) = wal THEN spdx(x - 1, y) = 0: spdy(x, y - 1) = 0: spdx(x, y) = 0: spdy(x, y) = 0: GOTO 3\r
+ spdy(x, y) = spdy(x, y) - (press(x, y) / 500) ' gravitation\r
+\r
+ IF press(x + 1, y) = wal THEN spdx(x, y) = 0: GOTO 2\r
+ spdx(x, y) = (press(x + 1, y) - press(x, y)) / 20 + spdx(x, y)\r
+ 2\r
+ IF press(x, y + 1) = wal THEN spdy(x, y) = 0: GOTO 3\r
+ spdy(x, y) = (press(x, y + 1) - press(x, y)) / 20 + spdy(x, y)\r
+ 3\r
+ NEXT x\r
NEXT y\r
\r
\r
4\r
b = 0\r
FOR y = 2 TO 99\r
-FOR x = 2 TO 99\r
-a = press(x, y) + spdx(x, y) + spdy(x, y) - spdx(x - 1, y) - spdy(x, y - 1)\r
-\r
-IF a = 0 OR ((a < 0) AND (a > -.0001)) THEN\r
-IF spdx(x, y) < 0 THEN spdx(x, y) = 0\r
-IF spdy(x, y) < 0 THEN spdy(x, y) = 0\r
-IF spdx(x - 1, y) > 0 THEN spdx(x - 1, y) = 0\r
-IF spdy(x, y - 1) > 0 THEN spdy(x, y - 1) = 0\r
-END IF\r
-\r
-IF a < 0 THEN\r
-IF spdx(x, y) < 0 THEN spdx(x, y) = spdx(x, y) / 1.5\r
-IF spdy(x, y) < 0 THEN spdy(x, y) = spdy(x, y) / 1.5\r
-IF spdx(x - 1, y) > 0 THEN spdx(x - 1, y) = spdx(x - 1, y) / 1.5\r
-IF spdy(x, y - 1) > 0 THEN spdy(x, y - 1) = spdy(x, y - 1) / 1.5\r
-b = 1\r
-LOCATE 20, 1\r
-PRINT a\r
-END IF\r
-NEXT x\r
+ FOR x = 2 TO 99\r
+ a = press(x, y) + spdx(x, y) + spdy(x, y) - spdx(x - 1, y) - spdy(x, y - 1)\r
+\r
+ IF a = 0 OR ((a < 0) AND (a > -.0001)) THEN\r
+ IF spdx(x, y) < 0 THEN spdx(x, y) = 0\r
+ IF spdy(x, y) < 0 THEN spdy(x, y) = 0\r
+ IF spdx(x - 1, y) > 0 THEN spdx(x - 1, y) = 0\r
+ IF spdy(x, y - 1) > 0 THEN spdy(x, y - 1) = 0\r
+ END IF\r
+\r
+ IF a < 0 THEN\r
+ IF spdx(x, y) < 0 THEN spdx(x, y) = spdx(x, y) / 1.5\r
+ IF spdy(x, y) < 0 THEN spdy(x, y) = spdy(x, y) / 1.5\r
+ IF spdx(x - 1, y) > 0 THEN spdx(x - 1, y) = spdx(x - 1, y) / 1.5\r
+ IF spdy(x, y - 1) > 0 THEN spdy(x, y - 1) = spdy(x, y - 1) / 1.5\r
+ b = 1\r
+ LOCATE 20, 1\r
+ PRINT a\r
+ END IF\r
+ NEXT x\r
NEXT y\r
IF b = 1 THEN GOTO 4\r
\r
FOR y = 2 TO 99\r
-FOR x = 2 TO 99\r
-IF spdx(x, y) > 0 THEN spdxp(x - 1, y) = ((press(x, y) * spdx(x - 1, y)) + (spdx(x, y) * spdx(x, y))) / (press(x, y) + spdx(x, y)) - spdx(x - 1, y)\r
-IF spdy(x, y) > 0 THEN spdyp(x, y - 1) = ((press(x, y) * spdy(x, y - 1)) + (spdy(x, y) * spdy(x, y))) / (press(x, y) + spdy(x, y)) - spdy(x, y - 1)\r
-IF spdx(x - 1, y) < 0 THEN spdxp(x, y) = ((press(x, y) * spdx(x, y)) - (spdx(x - 1, y) * spdx(x - 1, y))) / (press(x, y) - spdx(x - 1, y)) - spdx(x, y)\r
-IF spdy(x, y - 1) < 0 THEN spdyp(x, y) = ((press(x, y) * spdy(x, y)) - (spdy(x, y - 1) * spdy(x, y - 1))) / (press(x, y) - spdy(x, y - 1)) - spdy(x, y)\r
-NEXT x\r
+ FOR x = 2 TO 99\r
+ IF spdx(x, y) > 0 THEN spdxp(x - 1, y) = ((press(x, y) * spdx(x - 1, y)) + (spdx(x, y) * spdx(x, y))) / (press(x, y) + spdx(x, y)) - spdx(x - 1, y)\r
+ IF spdy(x, y) > 0 THEN spdyp(x, y - 1) = ((press(x, y) * spdy(x, y - 1)) + (spdy(x, y) * spdy(x, y))) / (press(x, y) + spdy(x, y)) - spdy(x, y - 1)\r
+ IF spdx(x - 1, y) < 0 THEN spdxp(x, y) = ((press(x, y) * spdx(x, y)) - (spdx(x - 1, y) * spdx(x - 1, y))) / (press(x, y) - spdx(x - 1, y)) - spdx(x, y)\r
+ IF spdy(x, y - 1) < 0 THEN spdyp(x, y) = ((press(x, y) * spdy(x, y)) - (spdy(x, y - 1) * spdy(x, y - 1))) / (press(x, y) - spdy(x, y - 1)) - spdy(x, y)\r
+ NEXT x\r
NEXT y\r
\r
\r
FOR y = 2 TO 99\r
-FOR x = 2 TO 99\r
-press(x + 1, y) = press(x + 1, y) - spdx(x, y)\r
-press(x, y + 1) = press(x, y + 1) - spdy(x, y)\r
-press(x, y) = press(x, y) + spdx(x, y)\r
-press(x, y) = press(x, y) + spdy(x, y)\r
-NEXT x\r
+ FOR x = 2 TO 99\r
+ press(x + 1, y) = press(x + 1, y) - spdx(x, y)\r
+ press(x, y + 1) = press(x, y + 1) - spdy(x, y)\r
+ press(x, y) = press(x, y) + spdx(x, y)\r
+ press(x, y) = press(x, y) + spdy(x, y)\r
+ NEXT x\r
NEXT y\r
\r
FOR y = 2 TO 99\r
-FOR x = 2 TO 99\r
-spdx(x, y) = spdx(x, y) + spdxp(x, y)\r
-spdxp(x, y) = 0\r
-spdy(x, y) = spdy(x, y) + spdyp(x, y)\r
-spdyp(x, y) = 0\r
-NEXT x\r
+ FOR x = 2 TO 99\r
+ spdx(x, y) = spdx(x, y) + spdxp(x, y)\r
+ spdxp(x, y) = 0\r
+ spdy(x, y) = spdy(x, y) + spdyp(x, y)\r
+ spdyp(x, y) = 0\r
+ NEXT x\r
NEXT y\r
\r
\r
FOR y = 1 TO 100\r
-FOR x = 1 TO 100\r
-PSET (x, y), press(x, y) + 16\r
-NEXT x\r
+ FOR x = 1 TO 100\r
+ PSET (x, y), press(x, y) + 16\r
+ NEXT x\r
NEXT y\r
\r
saveit\r
\r
SUB disp\r
FOR y = 47 TO 53\r
-FOR x = 47 TO 53\r
-LOCATE y - 46, (x - 46) * 4\r
-PRINT press(x, y)\r
-NEXT x\r
+ FOR x = 47 TO 53\r
+ LOCATE y - 46, (x - 46) * 4\r
+ PRINT press(x, y)\r
+ NEXT x\r
NEXT y\r
\r
a$ = INPUT$(1)\r
y3 = y2 - y1\r
\r
FOR a = 0 TO m\r
-x5 = x3 * a / m + x1\r
-y5 = y3 * a / m + y1\r
-press(x5, y5) = wal\r
+ x5 = x3 * a / m + x1\r
+ y5 = y3 * a / m + y1\r
+ press(x5, y5) = wal\r
NEXT a\r
\r
\r
\r
SUB saveit\r
FOR y = 1 TO 100\r
-a$ = ""\r
-FOR x = 1 TO 100\r
-a$ = a$ + CHR$(POINT(x, y))\r
-NEXT x\r
-linb = a$\r
-PUT #1, , linb\r
+ a$ = ""\r
+ FOR x = 1 TO 100\r
+ a$ = a$ + CHR$(POINT(x, y))\r
+ NEXT x\r
+ linb = a$\r
+ PUT #1, , linb\r
NEXT y\r
\r
\r
frm = 0\r
\r
FOR a = 1 TO 100\r
-FOR b = 1 TO 100\r
-press(a, b) = 3\r
-spdx(a, b) = 0\r
-spdy(a, b) = 0\r
-spdxp(a, b) = 0\r
-spdyp(a, b) = 0\r
-NEXT b\r
+ FOR b = 1 TO 100\r
+ press(a, b) = 3\r
+ spdx(a, b) = 0\r
+ spdy(a, b) = 0\r
+ spdxp(a, b) = 0\r
+ spdyp(a, b) = 0\r
+ NEXT b\r
NEXT a\r
\r
FOR y = 30 TO 60\r
-FOR x = 10 TO 50\r
-spot x, y, 30\r
-NEXT x\r
+ FOR x = 10 TO 50\r
+ spot x, y, 30\r
+ NEXT x\r
NEXT y\r
\r
lin 2, 2, 2, 99\r
lin 2, 2, 99, 2\r
\r
FOR x = 5 TO 40 STEP 5\r
-lin x, 80, x + 50, 80 - x\r
+ lin x, 80, x + 50, 80 - x\r
NEXT x\r
\r
END SUB\r