碰撞体离中心最近的一个三角形判断
方法
1 面积法:三角形三个点两两分别于碰撞体顶点组成新三角形,这三个新三角形面积和与矩形的三角形面积相等则在内。但可能存在浮点的情况,因此精度计算反而不准确
2 碰撞体顶点与三角形三个顶点形成向量,分别与三角形三条边的向量进行叉积得到法向量方向,都同向则在内。
如点P,三角形ABC,就是AP和AB,BP和BC,CP和CA进行判断
3 重心法(速度快)
原理:A为坐标中心点来计算
P = A + u * (C – A) + v * (B - A)
u >= 0
v >= 0
u + v <= 1
计算
令v0 = C – A, v1 = B – A, v2 = P – A,则v2 = u * v0 + v * v1
(v2) • v0 = (u * v0 + v * v1) • v0
(v2) • v1 = (u * v0 + v * v1) • v1
根据点积
v2 • v0 = u * (v0 • v0) + v * (v1 • v0) // 式1
v2 • v1 = u * (v0 • v1) + v * (v1• v1) // 式2
得
u = ((v1•v1)(v2•v0)-(v1•v0)(v2•v1)) / ((v0•v0)(v1•v1) - (v0•v1)(v1•v0))
v = ((v0•v0)(v2•v1)-(v0•v1)(v2•v0)) / ((v0•v0)(v1•v1) - (v0•v1)(v1•v0))
解的过程运算麻烦,编程中则封装好函数