点在平面内与三角形三个顶点中任意两点构成三个三角形,可以通过计算这三个三角形的面积和与原三角形面积比较来判断是否在三角形内
设有三角形ABC,判断点Q是否在三角形内(包含在某条边上),则当:
S(PAB)+S(PBC)+S(PAC)=S(ABC)
三角形计算公式:S=1/2*|cross(a,b)|
struct triangle{
point a;
point b;
point c;
};
bool intriangle(triangle t,point p)
{
v ab,ac,pa,pb,pc;
ab=b-a;
ac=c-a;
pa=a-p;
pb=b-p;
pc=c-p;
double sabc=fabs(cross(ab,ac));
double spab=fabs(cross(pa,pb));
double spac=fabs(cross(pc,pa));
double spbc=fabs(cross(pb,pc));
if(sabc==spab+spac+spbc){
return true;
}else{
return false;
}
}