1. 公式 pT= a * pA + b * pB + c * pC
(0 <= a + b + c <=1)
2. 化简:
pT= (1 - b - c) * pA + b * pB + c * pC
=> pT= (1 - b - c) * pA + b * pB + c * pC
=> pT= pA + b * (pB - pA) + c * (pC - pA)
=> b * (pB - pA) + c * (pC - pA) = pT - pA
=> b * pAB + c * pAC = pAT
=> b * pxAB + c * pxAC = pxAT
b * pyAB + c * pyAC = pyAT
(OK)
3.克莱姆法则
4,, 算出b, c 就可以算出 a。
5. 判断一个point 是否在 triangle中,例如
float sign (fPoint p1, fPoint p2, fPoint p3)
{
return (p1.x - p3.x) * (p2.y - p3.y) - (p2.x - p3.x) * (p1.y - p3.y);
}
bool PointInTriangle (fPoint pt, fPoint v1, fPoint v2, fPoint v3)
{
bool b1, b2, b3;
b1 = sign(pt, v1, v2) < 0.0f;
b2 = sign(pt, v2, v3) < 0.0f;
b3 = sign(pt, v3, v1) < 0.0f;
return ((b1 == b2) && (b2 == b3));
}
(向量叉乘的思路)
6. 消元法
7. 行列式的几何意义