【发布时间】:2013-10-16 01:32:37
【问题描述】:
目的是计算行进的距离。为此,我用速度、加速度和时间计算了euclidean distance。我从 GPS 获得这些数据。这是我的计算:
private float getDistanceTraveled(float vend, float vstart, long timeDifference){
float distance = 0;
if(vend == 0 && vstart == 0)
return distance;
if(vend - vstart == 0)
distance = vend * timeDifference;
else
distance = (vend * vend - vstart * vstart)
/ ((2 * (vend - vstart) / timeDifference);
return distance;
}
将此距离转换为地球表面最短距离的常用方法是什么?
我通过简单的圆计算来做到这一点,我给定的距离是chord c,radius r 是地球半径。
double distance = 2 * r * Math.asin(c / (2 * r));
我不能 100% 确定,如果这是计算欧几里得距离并进行转换的正确方法。我是否考虑了其他事情?
我对@987654327@很熟悉,但我不能在这种方法中使用坐标。
【问题讨论】:
-
欧式距离如何计算?
-
在给定弦长和圆半径的情况下,是否要计算圆弧的长度?那么你的公式似乎是正确的。
-
@HariShankar 我更新了我的问题。
-
@AbhishekBansal 很高兴听到这个消息,但我可以将此公式用于我的目的还是必须考虑其他因素?
-
Vincenty 的公式可能是您所追求的。请参阅此问题:*.com/questions/27928,其中包含有关 Haversine 和 Vincenty 的答案。