空间判断点与三角面片的位置关系 - Geminiv/CgvWiki GitHub Wiki
空间判断点与三角面片的位置关系
为解决此问题,首先应确定点是否在面上,若不在,点与面的关系自然为out;若在,则将问题转化为二维的点与三角形的关系判断,即进行如下判断。
因为三角形的三个点确定一个平面,在这个平面中,可以任意选择一点,其他的点都是作为相对位置关系。如以点A为例,然后选定[C-A]、[B-A]两个向量作为该空间的坐标分量,因此三角形平面中任意一点都可以用这两个向量AB,AC表示。
即 P = A + u * (C - A) + v * (B - A) 注意:系数u、v的取值的不同,表示了P的位置情况。
- P点在顶点位置上:
-
u = 0, v = 1则P在B点
-
u = 1, v = 0则P在C点
-
u = 0 且 v = 0则P在A点
- P点在边上:
- u = 0, 0 < v < 1则P在AB边
- v = 0, 0 < u < 1则P在AC边
- u > 0, v > 0, u + v = 1则P在BC边
- P点在三角形内部:
- u > 0, v > 0, u + v < 1则P在三角形内部。
- 除去以上三种情况,则表示P点在三角形外部。
最后,通过联立方程求解出u、v就可以通过分类实现判断啦~