跳到主要内容

反应扩散:从局部浓度到斑点与迷宫

打开反应扩散实验。拖动画布加入扰动,观察斑点逐渐分裂、延伸或连成条带。本站参考 Karl Sims 的反应扩散教程,在网格上计算两种虚拟物质的浓度,不逐个模拟分子。

怎么玩

切换“迷宫”“斑点”“珊瑚”会换用不同参数并重新播种。拖动加入一片高浓度 B 区域;键盘可用方向键移动光标,再按 Enter 或空格播种。暂停后单步能观察局部边缘如何变化。

重置恢复迷宫参数和默认种子。初始图案已经预先计算 160 个反应步,因此打开页面时看到的不是刚播种的圆点。参数名称描述常见外观,实际形状仍受种子、扰动与演化时间影响。

Gray–Scott 更新

记 A、B 的浓度为 a,ba,b,模型使用:

at=Da2aab2+f(1a),bt=Db2b+ab2(k+f)b.\frac{\partial a}{\partial t}=D_a\nabla^2a-ab^2+f(1-a), \qquad \frac{\partial b}{\partial t}=D_b\nabla^2b+ab^2-(k+f)b.

本站取 Da=1D_a=1Db=0.5D_b=0.5、时间步长为 1。扩散项采用九点模板:中心权重 1-1,上下左右各 0.20.2,四个对角各 0.050.05ff 补充 A,kkff 共同影响 B 的移除。

预设ffkk
迷宫0.0290.057
斑点0.0350.065
珊瑚0.05450.062

网格与颜色

计算网格为 160×112160\times112,边缘周期相接。每次仿真更新执行六个反应步;单步按钮也是六步。两组浮点缓冲区交替读写,避免同一轮计算混入刚更新的邻居;每步把浓度限制在 [0,1][0,1],作为这一显示实现的数值保护。

颜色只映射 B 的浓度:先将 b/0.4b/0.4 截断到 [0,1][0,1],再用平滑曲线映射到色阶。因此图例顶端标为 0.4+0.4+,更高浓度共享末端颜色,不能仅凭颜色区分。像素场经平滑放大后显示;改变画布大小不会增加模拟网格的精度。

生命游戏 相比,邻居影响在这里通过连续浓度传播;它是生成纹理的简化模型,并未拟合某种真实化学反应的物理单位或速率。

探索关联打开关联网络