Add reaction-diffusion in BQN, with video generation script

This commit is contained in:
Dimitri Lozeve 2023-10-03 13:38:33 +02:00
parent 2dd11ef413
commit c607954d34
5 changed files with 45 additions and 0 deletions

1
.gitignore vendored
View file

@ -1 +1,2 @@
*\~
out/

11
generate_animation.sh Executable file
View file

@ -0,0 +1,11 @@
#!/usr/bin/env bash
set -euo pipefail
mkdir -p out
bqn grayscott.bqn
# first image is often bad
rm out/step00000.pnm
# convert all to PNG
parallel --jobs 8 "pnmtopng {} > {.}.png" ::: out/*.pnm
# generate video
ffmpeg -y -framerate 30 -pattern_type glob -i 'out/*.png' -r 30 -vf scale=500:-1 -loop 0 out.mp4

31
grayscott.bqn Normal file
View file

@ -0,0 +1,31 @@
PBM,PPM•Import"../bqn-graphics/pnm.bqn"
Inferno,Magma,Viridis•Import"../bqn-graphics/colormaps.bqn"
# Parameters
dtdadbfk1.0,0.16,0.08,0.060,0.062
n500 # image size
m10 # seed size at the center of the image
# Discrete Laplacian
Lapl(+´1¯1(˘)¨<)-4×
# Gray-Scott update
UpdateA{𝕨+dt×(da×Lapl 𝕨)+(-𝕨×𝕩2)+f×1-𝕨}
UpdateB{𝕩+dt×(db×Lapl 𝕩)+(𝕨×𝕩2)-𝕩×k+f}
Update(UpdateAUpdateB)´
# Initialization
ann1
Mask{𝕩𝕩(-𝕨𝕨+𝕩÷2)(2×𝕨𝕨)1}
b(m Mask n)0.1×nn•rand.Range 0
# Run
Step{stepsize 𝕊 iab:
•term.OutRaw"."
•term.Flush @
apbpUpdatestepsize ab
("out/step"(¯5•Fmt¨5-i)".pnm")•file.Chars (PPM 255×>Inferno¨1-a)@+10
(i+1)apbp
}
50 Step•_while_(600>) 0ab
•Out""

2
inferno.pnm Normal file

File diff suppressed because one or more lines are too long

BIN
out.mp4 Normal file

Binary file not shown.