在分形上实现缩放
Implementing zoom on a fractal
我使用以下算法实现了一个非常基本的 Serpiensky 三角形:
For each pixel (Px, Py)
if (Px & Py)
draw_pixel(Px, Py, color);
我想知道是否有可能对其实施缩放模拟,以渐进和无限期 "go" 进入具有漂亮动画的三角形。我无法完全理解这个公式,也没有在网络上找到任何密切相关的内容。
您使用的算法将产生如下结果:
获得缩放动画效果的方法有多种,但基本原理始终相同。您可以快速地逐一显示原始帧的 移位和缩放 版本。
在这里,我描述了一种非常简单的方法(假设我们使用 N
步在 T
秒内达到相同状态):
- 计算图像像素(对于 Serpiensky 三角形)并将其存储在二维数组中。
- 将原始图像复制到(单独的)帧缓冲区中。
- 循环{
- 缩小您的坐标 space(实际上,放大您的帧缓冲区)
- 移动框架(向坐标添加小的偏移量,以便移动它)
- 以原始分辨率显示新的帧缓冲区图像(裁剪超出框架的像素)
- 等待一个小的时间间隔(30fps 大约需要 33 毫秒)。
- if
N
th 迭代?转到步骤 2
- } 转到步骤 3。
N
和 T
的选择取决于您希望动画的速度和流畅度。必须选择偏移量和缩放因子,以便:在缩放和移动 N
步之后,您得到的图像看起来与起始(原始)图像几乎相同。
值得一提的重要一点是,为了使这种方法产生平滑的(即下降外观)动画,您计算的 Serpiensky 三角形的分辨率大约是显示分辨率的 20-30 倍。
我使用以下算法实现了一个非常基本的 Serpiensky 三角形:
For each pixel (Px, Py)
if (Px & Py)
draw_pixel(Px, Py, color);
我想知道是否有可能对其实施缩放模拟,以渐进和无限期 "go" 进入具有漂亮动画的三角形。我无法完全理解这个公式,也没有在网络上找到任何密切相关的内容。
您使用的算法将产生如下结果:
获得缩放动画效果的方法有多种,但基本原理始终相同。您可以快速地逐一显示原始帧的 移位和缩放 版本。
在这里,我描述了一种非常简单的方法(假设我们使用 N
步在 T
秒内达到相同状态):
- 计算图像像素(对于 Serpiensky 三角形)并将其存储在二维数组中。
- 将原始图像复制到(单独的)帧缓冲区中。
- 循环{
- 缩小您的坐标 space(实际上,放大您的帧缓冲区)
- 移动框架(向坐标添加小的偏移量,以便移动它)
- 以原始分辨率显示新的帧缓冲区图像(裁剪超出框架的像素)
- 等待一个小的时间间隔(30fps 大约需要 33 毫秒)。
- if
N
th 迭代?转到步骤 2
- } 转到步骤 3。
N
和 T
的选择取决于您希望动画的速度和流畅度。必须选择偏移量和缩放因子,以便:在缩放和移动 N
步之后,您得到的图像看起来与起始(原始)图像几乎相同。
值得一提的重要一点是,为了使这种方法产生平滑的(即下降外观)动画,您计算的 Serpiensky 三角形的分辨率大约是显示分辨率的 20-30 倍。