CellWidth
= _WIDTH / GridWidth
MainGrid(SelectedCelli, SelectedCellj).x = 8
MainGrid(SelectedCelli, SelectedCellj).y = 1
MainGrid(SelectedCelli, SelectedCellj).z = 6
GridVel(SelectedCelli, SelectedCellj) = 0
MainGrid(SelectedCelli, SelectedCellj).x = 0
MainGrid(SelectedCelli, SelectedCellj).y = 0
MainGrid(SelectedCelli, SelectedCellj).z = 0
GridVel(SelectedCelli, SelectedCellj) = 0
DIM AS Vector a1
, a2
, a3
, a4
, a5
, a6
, a7
, a8
, a9
AuxiGrid(i, j).x = MainGrid(i, j).x
AuxiGrid(i, j).y = MainGrid(i, j).y
AuxiGrid(i, j).z = MainGrid(i, j).z
FOR i
= 1 TO GridWidth
- 2 FOR j
= 1 TO GridHeight
- 2 a1 = AuxiGrid(i - 1, j + 1)
a2 = AuxiGrid(i, j + 1)
a3 = AuxiGrid(i + 1, j + 1)
a4 = AuxiGrid(i - 1, j)
a5 = AuxiGrid(i, j)
a6 = AuxiGrid(i + 1, j)
a7 = AuxiGrid(i - 1, j - 1)
a8 = AuxiGrid(i, j - 1)
a9 = AuxiGrid(i + 1, j - 1)
' Diffusion
MainGrid(i, j).x = (1 / 5) * (a2.x + a4.x + a6.x + a8.x + a5.x)
' Game of life
t = a1.y + a2.y + a3.y + a4.y + a6.y + a7.y + a8.y + a9.y
MainGrid(i, j).y = 0
MainGrid(i, j).y = 1
MainGrid(i, j).y = 1
MainGrid(i, j).y = 0
MainGrid(i, j).y = 1
' Wave propagation
alpha = .25
wp1 = alpha * (a6.z + a4.z) + 2 * (1 - alpha) * a5.z - GridVel(i, j)
wp2 = alpha * (a2.z + a8.z) + 2 * (1 - alpha) * a5.z - GridVel(i, j)
MainGrid(i, j).z = (0.98) * (1 / 2) * (wp1 + wp2)
GridVel(i, j) = AuxiGrid(i, j).z
LINE (i
* CellWidth
, j
* CellHeight
)-(i
* CellWidth
+ CellWidth
, j
* CellHeight
+ CellHeight
), _RGB32(255 * MainGrid
(i
, j
).x
, 25 + 230 * MainGrid
(i
, j
).y
, 255 * ABS(MainGrid
(i
, j
).z
)), BF
LINE (i
* CellWidth
, j
* CellHeight
)-(i
* CellWidth
+ CellWidth
, j
* CellHeight
+ CellHeight
), _RGB32(100, 100, 100), B