判断一个点是否在三角形内
判断点$P$是否在$\triangle ABC$组成的三角形内
面积法
如果 $\triangle PAB,\triangle PAC,\triangle PBC$ 三个三角形的面积和等于三角形$\triangle ABC$的面积,则代表点$P$在$\triangle ABC$内
内角和法
连接点$P$和$\triangle ABC$三个顶点得到$\vec{pa},\vec{pb},\vec{pc}$;
求出这三条线段与三角形的个边的夹角,如果所有夹角之和为$180^\circ$,则点$P$在$\triangle ABC$内
同向法
沿$\triangle ABC$,$\vec{AB},\vec{BC},\vec{CA}$,点$P$在同一侧,则点$P$在$\triangle ABC$内
1 | static bool insideTriangle(int x, int y, const Vector3f* _v) |
重心法
- 1.u>=0
- 2.v>=0
3.u+v<=1
满足上述条件则点$P$在$\triangle ABC$内1.v==0,则点$P$在$\vec{AB}$ 上
- 2.u==0,则点$P$在$\vec{AC}$ 上
- 3.u+v==1,则点$P$在$\vec{BC}$ 上
1 | bool IsPointInTriangle(lt::Vector3<float> p, lt::Vector3<float> a, lt::Vector3<float> b, lt::Vector3<float> c) { |