计算两点之间的距离 - Java

时间:2014-09-19 13:55:16

标签: java geometry distance

我继承了一个代码,并且它编写了这个小函数来计算两点之间的距离。我想知道它是做什么的。我知道lat long数据是十进制度数。如果这个计算是正确的,有人可以提出一些见解吗?

     private double calculateDistance(QuoteItem quoteItem, RouteInfo routeInfo) {
        final double distance =
           ((Math.max(routeInfo.getLatitude(), quoteItem.getLatitude()) - Math.min    (routeInfo.getLatitude(), quoteItem.getLatitude())) +
           (Math.max(routeInfo.getLongitude(), quoteItem.getLongitude()) - Math.min(routeInfo.getLongitude(), quoteItem.getLongitude()))) * 60.0;
return distance;
     }

1 个答案:

答案 0 :(得分:3)

这是Manhattan distance计算的变体,它不是真正的欧几里得斜边距离计算,而是右三角形两边的简单求和乘以一些乘数,60。我通常看到它写的更简单地说是

Math.abs(p1.x - p2.x) + Math.abs(p1.y - p2.y)

enter image description here

这基本上就是你的计算,除了你还要乘以一些比例因子60.0。

我已经在程序中使用了这个程序,我希望得到一个快速而肮脏的距离估计,强调快速,因为它不涉及平方根。例如,我使用它一次非常粗糙(并且不正确但正确足够用于目的)计算像素颜色之间的差异,其中我不得不重复对包含两个图像的像素进行此计算,实时,对速度的需求超过了对准确性的需求。

相关问题