问题很简单,一个物体以v1
的速度从东西方向移动,另一个物体则以v2
的速度从南北方向移动。
我只需要算法(公式(来计算它们之间的最短距离,这样我就可以为它写一个程序
我确实知道它们和它们路径的交点之间的距离,它们是d1和d2。
假设您要求二维空间,在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
因此,区分两边wrt 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)
,这就是你的答案。
附言:在数学叠交上问这类问题。