Vector2交集

Vector2 intersection

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

所以,我有四个 Vector2 :

我要找他们是否相交,相交的地方,从现在开始什么时候相交。

我找到了许多数学解决方案,但我无法将它们转化为代码。

The visualization of the problem, numbers are velocities

您想计算​​

的最小值
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