# turing-patterns **Repository Path**: az13js/turing-patterns ## Basic Information - **Project Name**: turing-patterns - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-29 - **Last Updated**: 2026-09-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 图灵斑图 · Gray-Scott 反应扩散动画 基于 HTML5 Canvas 的反应–扩散(Reaction–Diffusion)图灵斑图实时模拟。 纯原生 JavaScript,**零依赖、零构建、可离线运行**,附完整的单元测试。 ![图灵斑图运行截图](screen.png) > 截图:迷宫参数(F=0.029, k=0.057)下运行 1730 步的效果—— > 种子区域向外生长出迷宫纹,未到达区域仍为均匀态(紫色)。 ## 背景 1952 年,Alan Turing 在《The Chemical Basis of Morphogenesis》中证明: 两个化学物质在**扩散速率不同**的条件下发生反应,均匀定态会自发失稳, 形成空间周期性花纹(条纹、斑点、迷宫)——这是生物体表纹路、 指纹、珊瑚纹理等自然图案的经典解释模型。 本实现采用最常用的 **Gray-Scott 模型**: ``` ∂u/∂t = Du∇²u − uv² + F(1−u) ∂v/∂t = Dv∇²v + uv² − (F+k)v ``` - `u`:反应物(持续补充、被反应消耗) - `v`:自催化剂(激活子,扩散更慢) - `F`:feed,补充速率;`k`:kill,移除速率 **拖动 F / k 滑块可以实时观察斑图相变**:迷宫 ↔ 孤立斑点 ↔ 珊瑚 ↔ 混沌。 ## 快速开始 ```bash # 1. 运行动画:直接用浏览器打开 index.html(无需服务器) # 或启动任意静态服务器: python -m http.server 8000 # 然后访问 http://127.0.0.1:8000 # 2. 运行单元测试(Node ≥ 12,无需 npm install) node test/run-tests.js # 或 npm test ``` ## 控件说明 | 控件 | 作用 | |---|---| | 预设 | 内置迷宫 / 孤点 / 珊瑚 / 孔洞 / 混沌 / 蠕虫 六组经典 (F, k) 参数 | | Feed F / Kill k | 实时调节反应参数,观察相变 | | 每帧步数 | 每个动画帧执行的模拟步数(加速演化) | | 暂停 / 继续 | 冻结与恢复 | | 重置 | 用同一随机种子重新播种——每次重置后的演化轨迹**完全相同** | ## 测试 21 项测试覆盖五层,全绿为准入门槛: ``` 数据结构 Field 周期回绕 / swap / 非法输入快速失败 算子数学 常数场散度为零 / 脉冲响应=模板系数 / 全场求和为零 动力学 不动点保持 / 反应方向 / 内联与参考实现逐点一致 集成 2000 步数值稳定性 / 3000 步斑图形成冒烟 / 确定性复现 渲染管线 LUT 端点 / 像素映射 clamp / mock ctx 渲染器 ``` ```bash $ node test/run-tests.js ok ... 21 通过 / 0 失败 / 共 21 项,耗时 134ms ```