如何计算两个移动物体之间的最短距离
how to calculate shortest distance between two moving objects
问题很简单,一个物体从东西以v1
的速度移动,另一个从南-北[=20]移动=] 速度 v2
.
我只需要算法(公式)来计算它们之间的最短距离,这样我就可以为它写一个程序。
我确实在它们和它们路径的交汇点之间有距离,它们是 d1 和 d2。
假设您要求二维 space,在 t=0
,让坐标轴上的起点为 (d1,0) and (0,d2)
。我们可以这样假设,因为一个物体总是水平移动(E-W 方向,沿 X 轴),而另一个物体总是垂直移动(S-N 方向,沿 Y 轴)。现在,一段时间后 t
,他们的位置将是 (d1-t*v1)
和 (0,d2-t*v2)
。 (速度-距离-时间关系)。
现在,此时它们之间的距离 t
将是,
D = d^2 = (d1-t*v1)^2 + (d2-t*v2)^2
因此,区分双方 t
,
dD/dt = 2(-v1)(d1-t*v1) + 2(-v2)(d2-t*v2) ....(1)
要使 D 最小,dD/dt = 0
并且二阶微分必须为正。现在,二阶微分:
d2D/dt2 = 2*v1^2 + 2*v2^2 which is positive for all real v1/v2. So, if `dD/dt = 0`, distance will be minimum.
所以,等于 (1) = 0,我们得到
t = (d1v1 + d2v2)/(v1^2 + v2^2)
所以,在 t = --above value--
获取 sqrt(D)
,这就是你的答案。
PS:在数学 stackexchange 上问这些类型的问题。
问题很简单,一个物体从东西以v1
的速度移动,另一个从南-北[=20]移动=] 速度 v2
.
我只需要算法(公式)来计算它们之间的最短距离,这样我就可以为它写一个程序。
我确实在它们和它们路径的交汇点之间有距离,它们是 d1 和 d2。
假设您要求二维 space,在 t=0
,让坐标轴上的起点为 (d1,0) and (0,d2)
。我们可以这样假设,因为一个物体总是水平移动(E-W 方向,沿 X 轴),而另一个物体总是垂直移动(S-N 方向,沿 Y 轴)。现在,一段时间后 t
,他们的位置将是 (d1-t*v1)
和 (0,d2-t*v2)
。 (速度-距离-时间关系)。
现在,此时它们之间的距离 t
将是,
D = d^2 = (d1-t*v1)^2 + (d2-t*v2)^2
因此,区分双方 t
,
dD/dt = 2(-v1)(d1-t*v1) + 2(-v2)(d2-t*v2) ....(1)
要使 D 最小,dD/dt = 0
并且二阶微分必须为正。现在,二阶微分:
d2D/dt2 = 2*v1^2 + 2*v2^2 which is positive for all real v1/v2. So, if `dD/dt = 0`, distance will be minimum.
所以,等于 (1) = 0,我们得到
t = (d1v1 + d2v2)/(v1^2 + v2^2)
所以,在 t = --above value--
获取 sqrt(D)
,这就是你的答案。
PS:在数学 stackexchange 上问这些类型的问题。