Apo*_*one 0 math artificial-intelligence vectormath unity-game-engine game-physics
问题:我有两个向量。我知道一个向量的起点,它的方向,它的大小。我知道另一个向量的起点及其大小。我需要找到第二个向量的方向以及相交的位置。
Vector A: Vector B:
Position = Known Position = Known
Direction= Known Direction= UNKNOWN
Magnitude= Known Magnitude= Known
To Find: Point of intersection.
Run Code Online (Sandbox Code Playgroud)
是否可以使用给定的参数找到交点?如果是,那么如何?
应用:我想根据他移动的速度找到一个玩家会被发现的位置,并在他被发现的那一刻向他发射子弹,同时考虑到子弹到达该虚拟目标所花费的时间位置。
继评论之后,我将在这里进行一次飞跃并直接回答您的最终问题。
假设玩家在初始时间处于一个点p并以速度移动v;你的枪就位q并以速度向任何方向发射子弹s:
OP 的长度是v?tQ的长度s?t。角度a由点积给出:
然后我们可以使用余弦规则来求解?t:
写在这个形式中,我们可以很容易地看到,这是一个二次方程,因此直接解决了?t使用二次式:
这里有几种情况我们需要考虑:
v < s: 只需要取正根,否则我们会得到负时间。v > s和dot(PQ, s) < 0:子弹永远不会抓住玩家。v > s和dot(PQ, s) > 0:这次取负根,因为正根用于向后移动的玩家(更长的时间;这也是上图中所示的情况)。?t从上面获得正确的值将使我们能够找到交点o,从而找到预期的方向d:
请注意,这d不是标准化的。此外,与角度方法不同,此解决方案也适用于 3D。
| 归档时间: |
|
| 查看次数: |
1607 次 |
| 最近记录: |