2

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

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

4

4 回答 4

1

我认为 CUDA 对计算代数/一般拓扑的用途并不大。当然,您可以使用它来处理同调群等,但这更像是代数而不是拓扑,它本身往往过于抽象/“动态”,无法真正从 SIMD 中受益。如果您没有明确的想法,我会先尝试一些 CPU 实现,然后仅移植到 CUDA 作为以后的优化。

无论如何,您所描述的听起来更像是您主要对创建拓扑空间的视​​觉表示感兴趣,即对给出具体嵌入T → ℝ³ 感兴趣。那是在差分拓扑领域,我认为它可以很好地利用 gpgpu 处理。然而,对于最后的“可视化步骤”,您想要使用更具体的东西;openGL + GLUT 很好。你可以从许多语言中使用它,我推荐 Haskell(毫无疑问,它对所有数学都很好),但 C 或 C++ 当然更接近库,你会找到更多示例并且可以更轻松地获取 CUDA。

于 2012-11-22T23:19:24.100 回答
0

我可能会建议“示例中的 CUDA”,很好的书,适合 CUDA 的开始。对于 3D 可视化,我使用 OpenGL 和 GLUT(或 freeglut)。所以看看NeHe教程

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

祝你好运!

于 2012-11-22T15:21:25.813 回答
0

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

教程

Dobbs 博士期刊系列CUDA:Rob Farmer 的大众超级计算非常出色,在其十四期中几乎涵盖了所有内容。它也开始相当温和,因此对初学者相当友好。

和其他人:

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

你也想看看 OpenCL,所以:

OpenCL:OpenCL 教程 | 麦克研究

于 2012-11-22T16:31:36.467 回答
0

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

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

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

于 2012-11-23T03:30:00.363 回答