Skip to content

Fractal Art

分形是自然界中常见的数学结构,具有自相似的特性。

什么是分形?

分形是一种无限复杂的几何形状,其中相同的模式在不同的尺度上重复出现。这种自相似的特性使得分形能够用简单的规则生成极其复杂的视觉效果。

曼德勃罗集合

曼德勃罗集合是最著名的分形之一:

javascript
function mandelbrot(c, maxIter) {
  let z = createVector(0, 0);
  let n = 0;

  while (z.mag() < 2 && n < maxIter) {
    let temp = createVector(
      z.x * z.x - z.y * z.y + c.x,
      2 * z.x * z.y + c.y
    );
    z = temp;
    n++;
  }

  return n;
}

科赫曲线

科赫曲线是一种经典的分形,通过递归生成:

javascript
function kochLine(x1, y1, x2, y2, depth) {
  if (depth === 0) {
    line(x1, y1, x2, y2);
    return;
  }

  let dx = (x2 - x1) / 3;
  let dy = (y2 - y1) / 3;

  let xA = x1 + dx;
  let yA = y1 + dy;

  let xB = x1 + dx * 2;
  let yB = y1 + dy * 2;

  let angle = atan2(y2 - y1, x2 - x1) - PI / 3;
  let len = sqrt(dx * dx + dy * dy);

  let xC = xA + cos(angle) * len;
  let yC = yA + sin(angle) * len;

  kochLine(x1, y1, xA, yA, depth - 1);
  kochLine(xA, yA, xC, yC, depth - 1);
  kochLine(xC, yC, xB, yB, depth - 1);
  kochLine(xB, yB, x2, y2, depth - 1);
}

分形的应用

  • 地形生成
  • 植物模拟
  • 纹理创建
  • 数据压缩

相关资源