检测三角形是否与3D空间中的体素/立方体相交的最佳算法是什么?我有这个源代码,用C:http://tog.acm.org/resources/GraphicsGems/gemsiii/triangleCube.c编写 . 我试图重构并将此代码转换为C,但我意识到我真的不知道发生了什么 . 此外,注释表明三角形交叉点与单位立方体进行比较,但是我无法找到扩展算法以使用任何任意立方体/体素的方法 .
检测三角形立方体交叉点是否有更清晰的实施(最好是C)?如果没有,那么扩展C代码以使用任意多维数据集的最佳方式是什么?
先感谢您
1 回答
一个简单的算法是:
计算三角形所在的平面 .
找到此平面与多维数据集(如果有)之间的交集 .
如果没有交叉点,那么问题就解决了 .
否则,找到贯穿每个三角形边的直线 .
对于每一行:如果交叉点在"outside"上,则没有交叉点 .
否则有一个十字路口 .
如果您对“最佳”算法的标准是简单性,那么这将是一个很好的标准 . 如果你在寻找性能,可能会有一些更快的 .
您还可以尝试查看托管在以下位置的代码:
http://fileadmin.cs.lth.se/cs/Personal/Tomas_Akenine-Moller/code/