设有向线段AB,两端点A(xa,ya),B(xb,yb)
另一点C(xc,yc)
float f = (xb - xa) * (yc - ya) - (xc - xa) * (yb - ya);
if(f > 0)
点C位于有向线段AB的左侧
else if(f == 0)
点C位于有向线段AB上(也有可能在延长线上)
else
点C位于有向线段AB的右侧
Recast 代码
inline bool left(const int* a, const int* b, const int* c)
{
return area2(a, b, c) < 0;
}
inline int area2(const int* a, const int* b, const int* c)
{
return (b[0] - a[0]) * (c[2] - a[2]) - (c[0] - a[0]) * (b[2] - a[2]);
}