一、问题描述

平面内有一个三角形abc和一个点p,判断点p是否在三角形内

二、解法

1、重心坐标法:

点在三角形内满足以下等式:
点在三角形外满足以下等式:

其中S表示面积

2、同侧法:

若p在ab的左侧,且p在bc的左侧,且p在ca的左侧,则p在三角形内,否则不在三角形内

判断方法:

如图分别构造红、绿、蓝三组向量,分别进行叉乘,同号为同一侧

t0 = ab CROSS pa
t1 = bc CROSS pb
t2 = ca CROSS pc
t0,t1,t2同号为真,否则为假
3、线性组合法:
向量ab和cb确定整个平面,p可以由这两个向量的线性组合所确定,即:

p=t0*ab+t1*cb

当p在a点时,t0=1,t1=0;

当p在c点时,t0=0,t1=1;

当p点在ac线上时,p为a和c的线性组合

所以ac边就困住了p点,让其不能突破这条边,约束条件为t0+t1=1

综上所述:

p点在三角形内必须满足:t0<1,t1<1,t0+t1<=1

具体代码求解过程,请看基础知识篇。
更多内容请关注微信公众号“图形学算法”!

讲解篇讲解篇

举报/反馈

图形小虾米

5获赞 2粉丝
带你了解图形学3D世界
关注
0
0
收藏
分享