我试图找到位于四面体内部的所有具有整数坐标的点(我想以某种方式能够遍历它们)。我知道定义四面体的四个点(A,B,C,D)的坐标。

我目前正在做的是找到四面体的边界框(A,B,C,D的最小和最大x,y,z坐标),然后循环遍历边界框内的所有点。对于每个这样的点,我都会计算重心坐标(使用the equations from Wikipedia),并检查该点是否在四面体内部(如果任何重心坐标为负或大于1,则该点不在内部)。

有一个更好的方法吗?目前,我正在测试的点(从边界框开始)大约有1/6的可能性确实位于四面体内部,因此我认为我进行了太多不必要的计算。

我正在处理通过对较大体积进行三角剖分生成的四面体列表(我正在扩展体积,并希望使用四面体插值对缺失值进行插值)。我没有使用任何外部库。

最佳答案

另一个改善想法:

检查是否有与“z”轴平行的“杆”形(即x = 4,y = 6)穿过四面体。如果不是,则不能包含(x = 4,y = 5,z)的值。

否则,找到杆与四面体边缘相交的位置(通过找出构成四面体边缘的平面相交的位置)。

假设这些平面在z = 1.3和z = 10.04处相交。然后,您知道(4,5,2)到(4,5,10)的所有点都在里面。

对x和y的所有值重复上述步骤。

实际上应该更快一些,因为这样可以节省1个循环。

关于math - 查找四面体内所有具有整数坐标的点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10592700/

10-10 22:31