Vector2交叉点

时间:2016-01-31 11:30:34

标签: math intersection

我正在开发一个小型2D游戏,我必须预测事情会在何时何地发生碰撞。

所以,我有四个Vector2:

  • 职位
  • B位置
  • 线速度
  • B线速度

我必须找到它们是否相交,它们相交的位置以及从现在起的时间。

我找到了很多数学解决方案,但我无法将它们翻译成代码。

The visualization of the problem, numbers are velocities

1 个答案:

答案 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