轉自:https://www.cnblogs.com/TenosDoIt/p/4024413.html
//二維向量叉乘, 叉乘的結果其實是向量,方向垂直於兩個向量組成的平面,這裏我們只需要其大小和方向
double
CrossProduct(
const
Vector2d vec)
{
return
x_*vec.y_ - y_*vec.x_;
}
//二維向量減法
Vector2d Minus(
const
Vector2d vec)
const
{
return
Vector2d(x_ - vec.x_, y_ - vec.y_);
}
bool
IsPointInTriangle4(
const
Vector2d pointP)
{
Vector2d PA = pointA_.Minus(pointP);
Vector2d PB = pointB_.Minus(pointP);
Vector2d PC = pointC_.Minus(pointP);
double
t1 = PA.CrossProduct(PB);
double
t2 = PB.CrossProduct(PC);
double
t3 = PC.CrossProduct(PA);
return
t1*t2 >= 0 && t1*t3 >= 0;
}