Canvas画布 ·

交互式曼德勃罗集

用鼠标探索无限细节的分形世界,缩放到 100 万倍仍能看到新图案。

Canvas API · 分形算法 · 像素级渲染

曼德勃罗集是最著名的分形图案——一个由简单数学公式 z = z² + c 生成的无限复杂的集合。这个交互式版本让你用鼠标自由探索这个数学奇观。

放大到足够深处,你会发现整个曼德勃罗集的微缩副本隐藏在边界中——这种自相似性是分形的核心特征。

缩放: 1x 位置: (-0.5, 0) 迭代: 100

鼠标滚轮缩放 · 拖拽平移 · 点击探索无限细节

如何探索

  • 鼠标滚轮:缩放(以鼠标位置为中心)
  • 拖拽:平移视图
  • 增加精度:在深层缩放时提高迭代次数
  • 换色:切换四种配色方案

数学原理

曼德勃罗集的定义极其简单:

对于复平面上的每个点 c:
  从 z = 0 开始
  重复:z = z² + c
  如果 |z| 永远不超过 2,则 c 属于曼德勃罗集
function mandelbrot(cx: number, cy: number, maxIter: number): number {
  let x = 0, y = 0;
  let iteration = 0;
  while (x * x + y * y <= 4 && iteration < maxIter) {
    const xNew = x * x - y * y + cx;
    y = 2 * x * y + cy;
    x = xNew;
    iteration++;
  }
  return iteration;
}

深度探索

当你缩放到边界区域时,会看到令人惊叹的细节:

  • 螺旋结构:无限嵌套的螺旋
  • 迷你曼德勃罗集:整个集合的微缩副本
  • 闪电状结构:复杂的分支图案
  • 海马谷:著名的 seahorse valley 区域

技术细节

  • 纯 Canvas 2D 像素级渲染
  • 支持实时缩放和平移
  • 自动调整迭代次数以适应缩放深度
  • 四种专业配色方案
  • 响应式设计