问题很简单,一个物体以 v1
的速度从东西移动。另一个来自南北,速度为 v2
.
我只需要算法(公式)来计算它们之间的最短距离,这样我就可以为其编写程序。
我确实在它们和它们路径的交汇点之间有距离,它们是 d1 和 d2。
最佳答案
假设您要求二维空间,在 t=0
处,让起点为 (d1,0) 和 (0,d2)
坐标轴。我们可以这样假设,因为一个物体总是水平移动(东西方向,沿 X 轴),而另一个物体总是垂直移动(南北方向,沿 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:在 math stackexchange 上问这些类型的问题。
关于algorithm - 如何计算两个移动物体之间的最短距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32218356/