在四面体内找到整数坐标的所有点

ppa*_*sek 5 math 3d interpolation coordinates

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

我现在正在做的是找到四面体的边界框(A,B,C,D的最小和最大x,y,z坐标),然后在边界框内的所有点上循环.对于每个这样的点,我计算重心坐标(使用来自维基百科的方程)并检查该点是否在四面体内(如果任何重心坐标为负或大于1,则该点不在内部).

有一个更好的方法吗?目前我测试的点(来自边界框)确实位于四面体内部的概率大约为1/6,所以我认为我做了太多不必要的计算.

我正在处理我通过三角测量更大音量生成的四面体列表(我正在扩展音量并希望使用四面体插值来插值缺失值).我没有使用任何外部库.

wil*_*lem 3

另一个改进的想法:

检查平行于 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 个循环。