如何创建3D数学拓扑模拟?

时间:2012-11-22 15:13:43

标签: 3d cuda gpu simulation topology

我从未有过创建模拟或3D对象的经验,但我想开始学习它们,并创建一个小型应用程序,它将模拟3D中的拓扑对象。我所说的“拓扑对象”是数学拓扑(代数/一般拓扑),意思是圆环,结,莫比乌斯带等等。所以,我的意思并不像网络拓扑那样。

我一直在互联网上搜索关于它们的一些示例代码,但我找不到任何有用的东西。如果你能给我一些材料,我会很高兴的。另一方面,我想听听您对我应该使用哪种编程语言/范例/扩展的看法?我还计划在项目中使用CUDA来实现加速。

4 个答案:

答案 0 :(得分:1)

我认为CUDA并不适用于计算代数/一般拓扑。当然,你可以用它来搞乱同源组等,但这相当于代数而不是拓扑,拓扑本身往往过于抽象/“动态”而无法真正受益于SIMD。如果你没有一个明确的想法,我首先尝试一些CPU实现,只作为后来的优化移植到CUDA。

无论如何,你所描述的听起来很像你主要对创建拓扑空间的可视化表示感兴趣,即给出具体的嵌入 T →ℝ³。这相当于差分拓扑的范围,我认为可以很好地利用gpgpu处理。但是对于最终的“可视化步骤”,您希望使用更具体的内容; openGL + GLUT很好。您可以使用多种语言的语言,我推荐使用Haskell(毫无疑问,它非常适用于所有数学),但C或C ++当然更接近库,您将找到更多示例,并且可以更轻松地获取CUDA。

答案 1 :(得分:0)

我可能会建议“CUDA在例子中”,很好的书,对CUDA有好处。 对于3D可视化,我使用OpenGL和GLUT(或freeglut)。所以看看NeHe tutorials

另一个不错的方法是检查一些可用的3D图形软件,以获得在3D空间中建模的想法。

祝你好运!

答案 2 :(得分:0)

由于您是从这个主题开始的,我建议您查看以下示例:

<强>教程

Rob Farmer的Dr Dobbs Journal系列CUDA: Supercomputing for the masses非常出色,涵盖了十四部分中的所有内容。它也开始相当温和,因此对初学者友好。

和其他人:

看看最后一项,你会发现许多学习CUDA的链接。

你也希望看看OpenCL,所以:

OpenCL:OpenCL Tutorials | MacResearch

答案 3 :(得分:0)

确定CUDA优化的需求似乎在分析之前进行了优化。如果我是你,我会使用更简单的渲染环境,直到我理解如何实现建模方面。

根据您首选的实施语言,您可能需要查看OpenTk。这为OpenGl提供了一个非常实用的C#包装器。在其中,如果您发现需要,可以使用着色器语言。

就如何表示拓扑对象而言,详细信息取决于您是否计划使用根据嵌入或隐式定义定义的描述。我认为后者可能是非常自然的,因为组成的开放集可能会被分解成可视化中变成多边形的部分。