【问题标题】:How do you create and render a 3D Fractal?您如何创建和渲染 3D 分形?
【发布时间】:2016-01-08 03:45:58
【问题描述】:

因此,我为我的 AP CS 课程分配了一个递归艺术项目,并且有大量空闲时间,所以我决定尝试一些更雄心勃勃的事情。

我的计划是创建一个 3D 分形,或者使用 GL 在可视化中渲染和着色,或者通过将各个方程的输出空间映射到立方体上的点并绘制这些点来表示。如果此解释不清楚,请查看底部的链接以获取图像。现在,我不需要能够在程序中修改分形。我只需要它来渲染单个 BufferedImage,我将直接将其放在 JFrame 上。

就这个项目而言,我在 Java 方面的经验有点有限。我以前画过 Mandelbrot 和 Julia 设置分形,但是 我几乎没有在 Java 中绘制/渲染 3D 对象的经验。不过,这些都是我自己可以查找和弄清楚的,所以没有在这里担心。

因此,问题是:如何映射应该在二维中的分形(例如 log(细分实体的数量)*log(细分的边长)= 2)到第三维(例如log(细分实体的数量)*log(细分的边长)= 3)?我在试图用数学方法解决这个问题时迷失了方向,我相信有一种更有条理的方法可以绕过很多已经存在的数学。

此外,如果您知道结构化方法可以按照公式绘制 2D 分形,并在 3D 中进行渲染,前提是提供了相应的公式(提高了功率),请告诉我。我听说过光线追踪器,不知道它们是什么,简短的总结会很酷。

这里是我想要获得的结果图片的链接:

http://2008.sub.blue/assets/0000/4575/power8_large.jpg

https://www.youtube.com/watch?v=rK8jhCVlCtU

【问题讨论】:

  • 据我所知,您链接的图片是Mandelbulb。如果您还没有这样做,您可能需要查看链接的 Wikipedia 文章,该文章提供了应该可用于算法方法的公式。

标签: java opengl 3d render fractals


【解决方案1】:

看起来该图像是Mandelbulb 的示例。这是一个类似于 Mandlebrot 集的迭代公式,但使用了 3D 点和一个关于将 3D 点提升为幂的新概念。

【讨论】:

  • 感谢您的信息。我检查了 Mandelbulb,听起来很有趣。 Wiki 上的公式似乎返回了三个维度上的一组 坐标。如何渲染 3D 对象,例如给定的 x、y、z 坐标?
  • 我认为您需要使用体积法。就像使用 Mandelbrot 集一样,您可以遍历图像中的所有像素并确定它应该是哪种颜色。对于 Mandelbulb,您迭代 3D 区域中的每个体素。您只想使用边界上的体素。我自己没有画过,所以只能在维基百科文章的链接中告诉你更多信息。
猜你喜欢
  • 1970-01-01
  • 2011-03-08
  • 1970-01-01
  • 1970-01-01
  • 2021-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-19
相关资源
最近更新 更多