当一个向量的方向未知时,两个向量的交点

问题:我有两个向量。我知道其中一个向量的起点、方向和大小。我知道另一个向量的起点和大小。我需要找到第二个向量的方向以及交点的位置。

   向量 A:                        向量 B:位置 = 已知                       位置 = 已知  方向 = 已知                       方向 = 未知大小 = 已知                       大小 = 已知要找:交点。

根据给定的参数,是否有可能找到交点?如果可以,那么如何找到?

应用:我想根据玩家移动的速度找到玩家的位置,并在找到他的那一刻向他射击子弹,同时考虑子弹到达该虚拟目标位置所需的时间。


回答:

根据评论,我将直接回答你的最终问题。

假设玩家在初始时间位于点 p 并以速度 v 移动;你的枪位于位置 q 并以速度 s任何方向射击子弹:

enter image description here

OP 的长度为 vΔt,Q 的长度为 sΔt。角度 a 由点积给出:

enter image description here

然后我们可以使用余弦定理来求解 Δt

enter image description here

以这种形式写出,我们可以很容易地看出这是一个二次方程,因此可以直接使用二次方程公式来求解 Δt

enter image description here

我们需要考虑几种情况:

  • v < s:只需取正根,否则会得到负时间。
  • v > sdot(PQ, s) < 0:子弹永远不会追上玩家。
  • v > sdot(PQ, s) > 0:这次取负根,因为正根是针对向后移动的玩家(时间更长;这也是上图中展示的情况)。

从上面的正确 Δt 值可以帮助我们找到交点 o,因此可以找到预定的方向 d

enter image description here

请注意,d 未经归一化。此外,这个解决方案也适用于3D,与使用角度的方法不同。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注