我正在开发一个小型2D游戏,我必须预测事情会在何时何地发生碰撞。
所以,我有四个Vector2:
我必须找到它们是否相交,它们相交的位置以及从现在起的时间。
我找到了很多数学解决方案,但我无法将它们翻译成代码。
答案 0 :(得分:3)
您想要计算
的最小值norm((A+t*vA)-(B+t*vB))=norm((A-B)+t*(vA-vB))
取这些欧几里德范数的平方
norm((A-B)+t*(vA-vB))^2 = norm(A-B)^2 + 2*t*dot(A-B,vA-vB) + t^2*norm(vA-vB)^2
在t
中为您提供了一个简单的二次函数,其中最小值具有值
min_dist =norm(A-B)^2 - dot(A-B,vA-vB)^2/norm(vA-vB)^2
时间
t = -dot(A-B,vA-vB)/norm(vA-vB)^2