绘制火焰分形

Posted

技术标签:

【中文标题】绘制火焰分形【英文标题】:Drawing Flame Fractals [closed] 【发布时间】:2010-11-10 02:21:42 【问题描述】:

我正在寻找有关如何通过谷歌搜索的信息,但我找不到太多,要么页面解释了如何使用第三方工具,要么太复杂,我无法掌握。任何人都知道他们如何/为什么工作?或者指出我不太复杂的实现方向?

【问题讨论】:

【参考方案1】:

我编写了一个投影仪演示文稿,其中涵盖了火焰分形的基础知识:

https://www.math.upenn.edu/~peal/files/Fractals[2009]Beamer[Eng]-PAXINUM.pdf

所有图像都是从我的火焰算法的 java 实现中完成的。

源代码可以在这里找到:

http://sourceforge.net/projects/flamethyst/

我相信 pdf http://flam3.com/flame_draves.pdf 连同上面的 java 实现应该会让你走得很远。

【讨论】:

【参考方案2】:

您可以阅读 Scott Draves 的 original paper,其中详细说明了它们的工作原理和方式,以及伪代码实现指南。

只要你有一些基本的数学知识,它应该相对容易理解(虽然它很长!)。老实说,您可能会忽略其中的大部分内容而只阅读代码,因为大部分文本都是背景信息。

【讨论】:

请注意,Draves 算法不是唯一的算法,但它可能是最流行的。【参考方案3】:

分形火焰基本上是iterated function system (IFS) 的变体。您有一系列函数,通过它们一遍又一遍地传递一个点。每个函数都是仿射变换和一个或多个变体的组合。

每次迭代,只选择一个函数(随机),并将结果点累积到缓冲区中,并用作下一次迭代的起点。

缓冲区在经过后处理和过滤后保存为图像,如flame paper 中所述。

最好的参考还是原来的实现,flam3。

【讨论】:

【参考方案4】:

我认为分形的计算成本太高,无法实时进行。

如果我 Google "simulating fire in computer graphics" 我会得到一些有趣的东西,表明这不是一个小问题(惊喜)。 SIGGRAPH 是一个您想查看其会议记录的会议。但请注意 - 这在数学上非常具有挑战性。

【讨论】:

【参考方案5】:

看看http://formulas.ultrafractal.com/

您可以在此处下载“已完成的配方包” enr.ucl 文件应该包含火焰分形的公式。

欲了解更多信息:http://www.ultrafractal.com/kb/flamefractals.html

【讨论】:

以上是关于绘制火焰分形的主要内容,如果未能解决你的问题,请参考以下文章

Python 14分形树绘制2.0

JavaScript图形实例:H分形

Java分形

Javascript在画布上绘制分形,递归保存和恢复问题

Python 13分形树绘制1.0--五角星(turtle库)

Android 上的分形应用程序