【问题标题】:How to create 3D mathematical topology simulations?如何创建 3D 数学拓扑模拟?
【发布时间】:2012-11-11 00:32:27
【问题描述】:

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

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

【问题讨论】:

    标签: 3d cuda gpu simulation topology


    【解决方案1】:

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

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

    祝你好运!

    【讨论】:

    • 是的,我听说过那本书,我一定会订购的。另一方面,你能给我一些好的开源 3D 图形软件吗?
    • 自 3.0 版以来,我一直很幸运能够在 3D Studio Max 中工作,我非常喜欢它! :) 你可以试试搅拌机。免费。您也可以尝试一些 Autocad,它更适用于工程,但也许您可以获得免费的学生版。
    【解决方案2】:

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

    教程

    Rob Farmer 撰写的 Dobbs 博士期刊系列 CUDA: Supercomputing for the masses 非常出色,在其十四期中几乎涵盖了所有内容。它的启动也相当温和,因此对初学者非常友好。

    还有其他人:

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

    你也想看看 OpenCL,所以:

    OpenCL:OpenCL Tutorials | MacResearch

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

          猜你喜欢
          • 2020-10-23
          • 1970-01-01
          • 2023-03-18
          • 1970-01-01
          • 1970-01-01
          • 2018-12-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多