Расчет расстояния между двумя точками - Java

Я унаследовал код, и в нем есть эта небольшая функция, написанная для вычисления расстояния между двумя точками. Мне интересно, что он делает. Я знаю, что данные по широте и длине указаны в десятичных градусах. Может ли кто-нибудь поделиться своими мыслями, если этот расчет верен?

     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;
     }

person Priya Rammohan    schedule 19.09.2014    source источник


Ответы (1)


Это вариант расчета манхэттенского расстояния, где это не вычисление истинного евклидова гипотенузного расстояния, а это простая сумма двух сторон прямоугольного треугольника, умноженная на некоторый множитель, 60. Я обычно вижу, что это записывается проще, как

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

введите описание изображения здесь

По сути, это и есть ваш расчет, за исключением того, что вы также умножаете его на некоторый коэффициент масштабирования, 60,0.

Я использовал это в программах, где я хочу получить быструю и приблизительную оценку расстояния с акцентом на quick, поскольку он не требует квадратных корней. Например, я использовал его один раз для очень грубого (и неправильного, но правильного достаточно для этих целей) расчета различий между цветами пикселей, где мне пришлось многократно выполнять этот расчет для пикселей, содержащих два изображения, в реальном времени и там, где потребность в скорости перевешивает потребность в точности.

person Hovercraft Full Of Eels    schedule 19.09.2014