Android examples for java.lang:Math Geometry
Calculates great-circle distance between two points on earth using the Haversine formula
/*************************************************************************** * Copyright 2005-2009 Last.fm Ltd. * * Portions contributed by Casey Link, Lukasz Wisniewski, * * Mike Jennings, and Michael Novak Jr. * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ //package com.java2s; public class Main { /**/* w w w .jav a 2 s.c o m*/ * Calculates great-circle distance between two points on earth using the * Haversine formula * * @param lat1 * (in degrees) * @param lon1 * (in degrees) * @param lat2 * (in degrees) * @param lon2 * (in degrees) * @return distance in kilometers */ public static double distance(double lat1, double lon1, double lat2, double lon2) { double dlat = Math.toRadians(lat2 - lat1); double dlon = Math.toRadians(lon2 - lon1); double a = Math.pow(Math.sin(dlat / 2), 2) + Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) * Math.pow(Math.sin(dlon / 2), 2); double c = 2 * Math.asin(1 < Math.sqrt(a) ? 1 : Math.sqrt(a)); double d = 6367 * c; return d; } }