在分形上实现缩放

Implementing zoom on a fractal

我使用以下算法实现了一个非常基本的 Serpiensky 三角形:

For each pixel (Px, Py)
if (Px & Py)
draw_pixel(Px, Py, color);

我想知道是否有可能对其实施缩放模拟,以渐进和无限期 "go" 进入具有漂亮动画的三角形。我无法完全理解这个公式,也没有在网络上找到任何密切相关的内容。

您使用的算法将产生如下结果:

获得缩放动画效果的方法有多种,但基本原理始终相同。您可以快速地逐一显示原始帧的 移位和缩放 版本。 在这里,我描述了一种非常简单的方法(假设我们使用 N 步在 T 秒内达到相同状态):

  1. 计算图像像素(对于 Serpiensky 三角形)并将其存储在二维数组中。
  2. 将原始图像复制到(单独的)帧缓冲区中。
  3. 循环{
    1. 缩小您的坐标 space(实际上,放大您的帧缓冲区)
    2. 移动框架(向坐标添加小的偏移量,以便移动它)
    3. 以原始分辨率显示新的帧缓冲区图像(裁剪超出框架的像素)
    4. 等待一个小的时间间隔(30fps 大约需要 33 毫秒)。
    5. if Nth 迭代?转到步骤 2
  4. } 转到步骤 3

NT 的选择取决于您希望动画的速度和流畅度。必须选择偏移量和缩放因子,以便:在缩放和移动 N 步之后,您得到的图像看起来与起始(原始)图像几乎相同。

值得一提的重要一点是,为了使这种方法产生平滑的(即下降外观)动画,您计算的 Serpiensky 三角形的分辨率大约是显示分辨率的 20-30 倍。