四面体边缘测试

时间:2011-07-13 23:21:44

标签: algorithm math vector geometry collision-detection

当测试点与四面体相对应时,有4种情况。它位于四面体内部,最接近顶点,最靠近边缘或最接近面部。以下是2D http://i.imgur.com/AmYNO.png的图表。例如,当P-A和B-A,C-A和D-A的点积全部为负时,点P最接近顶点A.如果你要在法线方向上拉伸一个三角形面以形成一个棱柱,那么如果它包含在那个空间内,该点将最接近那个面。如果不是这两种情况,它将最接近边缘。

我希望能够在不依赖顶点或面部测试结果的情况下专门测试它是否最接近边缘。有没有相对有效的方法来做到这一点?四面体不规则。

1 个答案:

答案 0 :(得分:3)

您的意思是,最接近特定边缘,或最接近边缘(与顶点或平面相对)?

如果是前者,那么一个点最接近(特定)边缘,如果它位于由垂直于相邻面并穿过边缘的两个平面所限定的四个半空间的交点中,并且两个平面垂直于边缘并穿过相邻的顶点。因此,针对所有四个平面测试您的观点,如果它位于适合所有平面的适当半空间中,则它最接近该边缘。

详细地说,假设我们要测试点 P 是否最接近边 AB ,它位于面 ABC 之间, BAD (顺时针给出的顶点)。然后四个测试是:

  • P - A )·( A - B )< 0
  • P - B )·( B - A )< 0
  • P - A )·(( B - C )×( A < / em> - C )×( A - B ))&lt; 0
  • P - B )·(( A - D )×( B < / em> - D )×( B - A ))&lt; 0

(我想知道是否有更便宜的方式进行第三次和第四次测试?如果你知道一次,请告诉我!)