gpt4 book ai didi

c - 对分形实现缩放

转载 作者:行者123 更新时间:2023-11-30 15:23:46 26 4
gpt4 key购买 nike

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

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

我想知道是否可以对其实现缩放模拟,以逐步且无限期地“进入”带有漂亮动画的三角形。我无法理解这个公式,也没有在网络上找到任何密切相关的内容。

最佳答案

您使用的算法将产生如下所示的结果:Serpiensky triangle using bit manipulations

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

  1. 计算图像像素(对于 Serpiensky 三角形)并将其存储在 2D 数组中。
  2. 将原始图像复制到(单独的)帧缓冲区中。
  3. 循环{
    1. 缩小坐标空间(有效地放大帧缓冲区)
    2. 移动框架(向坐标添加小的偏移量,以移动它)
    3. 以原始分辨率显示新的帧缓冲区图像(裁剪超出帧范围的像素)
    4. 等待一小段时间(30fps 时大约为 33 毫秒)。
    5. 如果N次迭代?转到步骤2
  4. } 转到步骤3

NT 的选择取决于您希望动画的速度和平滑程度。必须选择偏移量和缩放因子,以便:经过 N 步缩放和移位后,您将得到一个看起来与起始(原始)图像几乎相同的图像。

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

关于c - 对分形实现缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28652811/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com