判断一个点是否在三角形内有两种方法:一种是面积法,第二种是线段的拐向
面积法:
bool isPointInTriangle(Point p,TTriangle t)
{
TTriangle tem;//三角形的定义
double area;
int i,j;
area = 0.0;
for(i = 0;i < 2;i++)
{
for(j = 0;j < 2;j++)
{
if(i==j)
tem[j] = p;
else
tem[j] = t[j];
}
area += triangleArea(tem);
}
if(area == triangleArea(t))
return 1;
return 0;
}
拐点法:
bool isPointInTriangle(Point p,TTriangle t)
{
double k1,k2,k3;
k1 = multi(t[0],t[1],p);
k1 = multi(t[1],t[2],p);
k1 = multi(t[2],t[0],p);
if(k1*k2*k3!=0)
{
if(k1*k2<0)
return 0;
if(k1*k3<0)
return 0;
}
return 1;
}
如果多边形是凸多边形,以上的方法依然使用,但是如果是凹多边形就麻烦了。。