首页 文章

Triangle-Cube / Voxel交叉口

提问于
浏览
2

检测三角形是否与3D空间中的体素/立方体相交的最佳算法是什么?我有这个源代码,用C:http://tog.acm.org/resources/GraphicsGems/gemsiii/triangleCube.c编写 . 我试图重构并将此代码转换为C,但我意识到我真的不知道发生了什么 . 此外,注释表明三角形交叉点与单位立方体进行比较,但是我无法找到扩展算法以使用任何任意立方体/体素的方法 .

检测三角形立方体交叉点是否有更清晰的实施(最好是C)?如果没有,那么扩展C代码以使用任意多维数据集的最佳方式是什么?

先感谢您

1 回答

  • 0

    一个简单的算法是:

    • 计算三角形所在的平面 .

    • 找到此平面与多维数据集(如果有)之间的交集 .

    • 如果没有交叉点,那么问题就解决了 .

    • 否则,找到贯穿每个三角形边的直线 .

    • 对于每一行:如果交叉点在"outside"上,则没有交叉点 .

    • 否则有一个十字路口 .

    如果您对“最佳”算法的标准是简单性,那么这将是一个很好的标准 . 如果你在寻找性能,可能会有一些更快的 .

    您还可以尝试查看托管在以下位置的代码:

    http://fileadmin.cs.lth.se/cs/Personal/Tomas_Akenine-Moller/code/

相关问题