【发布时间】:2015-02-21 23:49:49
【问题描述】:
我使用以下算法实现了一个非常基本的 Serpiensky 三角形:
For each pixel (Px, Py)
if (Px & Py)
draw_pixel(Px, Py, color);
我想知道是否可以在其上实现缩放模拟,以通过漂亮的动画逐步且无限期地“进入”三角形。我无法理解这个公式,也没有在网络上找到任何密切相关的内容。
【问题讨论】:
我使用以下算法实现了一个非常基本的 Serpiensky 三角形:
For each pixel (Px, Py)
if (Px & Py)
draw_pixel(Px, Py, color);
我想知道是否可以在其上实现缩放模拟,以通过漂亮的动画逐步且无限期地“进入”三角形。我无法理解这个公式,也没有在网络上找到任何密切相关的内容。
【问题讨论】:
您使用的算法将产生如下内容:
可以有不同的方法来获得缩放动画效果,但基本原理始终相同。您以较快的速度逐一显示原始帧的移位和缩放版本。
在这里,我描述了一种非常简单的方法(假设我们使用N 步骤在T 秒内达到相同的状态):
Nth 迭代?转到步骤 2
N 和 T 的选择取决于您希望动画的速度和流畅度。必须选择偏移量和缩放因子,以便:在N 缩放和移动步骤之后,您将得到一个看起来与起始(原始)图像几乎相同的图像。
值得一提的重要一点是,为了让这种方法产生平滑的(即看起来像下降的)动画,需要计算出的 Serpiensky 三角形的分辨率大约是显示分辨率的 20-30 倍。
【讨论】:
Px" = 1.1 * Px。只有 91% 的原始图片会被复制,其余部分会被裁剪。 Px" 将是一个更大的新空间。复制完成后,我们重新调整它以显示输出分辨率。原始图像未受影响,我们所做的所有操作都在副本上,即 frame-buffer。事实上,您不需要完全按照我提到的步骤进行操作。根据您的确切目标,您的方法应该有所不同。但我认为您已经掌握了总体思路。