空间判断点与三角面片的位置关系 - Geminiv/CgvWiki GitHub Wiki

空间判断点与三角面片的位置关系

为解决此问题,首先应确定点是否在面上,若不在,点与面的关系自然为out;若在,则将问题转化为二维的点与三角形的关系判断,即进行如下判断。

因为三角形的三个点确定一个平面,在这个平面中,可以任意选择一点,其他的点都是作为相对位置关系。如以点A为例,然后选定[C-A]、[B-A]两个向量作为该空间的坐标分量,因此三角形平面中任意一点都可以用这两个向量AB,AC表示。

即  P = A + u * (C - A) + v * (B - A)

注意:系数u、v的取值的不同,表示了P的位置情况。

  img

  1. P点在顶点位置上:
  • u = 0, v = 1则P在B点

  • u = 1, v = 0则P在C点

  • u = 0 且 v = 0则P在A点

  1. P点在边上:
  • u = 0, 0 < v < 1则P在AB边
  • v = 0, 0 < u < 1则P在AC边
  • u > 0, v > 0, u + v = 1则P在BC边
  1. P点在三角形内部:
  • u > 0, v > 0, u + v < 1则P在三角形内部。
  1. 除去以上三种情况,则表示P点在三角形外部。

最后,通过联立方程求解出u、v就可以通过分类实现判断啦~