31 lines
948 B
BQN
31 lines
948 B
BQN
⟨PBM,PPM⟩←•Import"../bqn-graphics/pnm.bqn"
|
||
⟨Inferno,Magma,Viridis⟩←•Import"../bqn-graphics/colormaps.bqn"
|
||
|
||
# Parameters
|
||
dt‿da‿db‿f‿k←⟨1.0,0.16,0.08,0.060,0.062⟩
|
||
n←500 # image size
|
||
m←10 # 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←(UpdateA⋈UpdateB)´
|
||
|
||
# Initialization
|
||
a←n‿n⥊1
|
||
Mask←{𝕩‿𝕩↑(-𝕨‿𝕨+𝕩÷2)↑(2×𝕨‿𝕨)⥊1}
|
||
b←(m Mask n)⌈0.1×n‿n•rand.Range 0
|
||
|
||
# Run
|
||
Step←{stepsize 𝕊 i‿a‿b:
|
||
•term.OutRaw"."
|
||
•term.Flush @
|
||
ap‿bp←Update⍟stepsize a‿b
|
||
("out/step"∾(¯5↑∾•Fmt¨5-⊸↑i)∾".pnm")•file.Chars (PPM ⌊255×>Inferno¨1-a)∾@+10
|
||
(i+1)‿ap‿bp
|
||
}
|
||
|
||
50 Step•_while_(600⊸>∘⊑⊢) 0‿a‿b
|
||
•Out""
|