Lat / Lon + Distancia + DENOMINACIÓN -> Lat / Lon
-
22-08-2019 - |
Pregunta
Por lo tanto: I tienen la siguiente función, adaptado de una fórmula se encuentra en línea, que tiene dos coordenadas Lat / Lon y encuentra a la distancia entre ellos en millas (a lo largo de una Tierra esférica):
public static double distance (double lat1, double lon1, double lat2, double lon2) {
double theta = toRadians(lon1-lon2);
lat1 = toRadians(lat1);
lon1 = toRadians(lon1);
lat2 = toRadians(lat2);
lon2 = toRadians(lon2);
double dist = sin(lat1)*sin(lat2) + cos(lat1)*cos(lat2)*cos(theta);
dist = toDegrees(acos(dist)) * 60 * 1.1515 * 1.609344 * 1000;
return dist;
}
Por lo que yo puedo decir que esto funciona muy bien.
Lo que necesito es una segunda función que, utilizando el mismo modelo exacto de la geometría de la Tierra, toma un único par Lat / Lon [A], un encabezamiento, y una distancia, y da salida a un nuevo par Lat / Lon [B ] de tal manera que si usted comenzó en el punto [a] y la distancia recorrida dada en el título dado, que acabaría en el punto [B].
Aquí es donde el hecho de que mis conocimientos de geometría me han dejado del todo entra en juego:)
Cualquier ayuda sería muy apreciada!
Gracias, -Dan
Solución
consigo la mayor parte de los tipos de fórmulas de La Aviación Formulario .
La fórmula que da es:
Lat / Lon dado radial y la distancia
Un punto {lat, lon} es una distancia D hacia fuera en la radial tc desde el punto 1 si:
lat=asin(sin(lat1)*cos(d)+cos(lat1)*sin(d)*cos(tc)) IF (cos(lat)=0) lon=lon1 // endpoint a pole ELSE lon=mod(lon1-asin(sin(tc)*sin(d)/cos(lat))+pi,2*pi)-pi ENDIF
Este algoritmo se limita a distancias tales que dlon
lat =asin(sin(lat1)*cos(d)+cos(lat1)*sin(d)*cos(tc)) dlon=atan2(sin(tc)*sin(d)*cos(lat1),cos(d)-sin(lat1)*sin(lat)) lon=mod( lon1-dlon +pi,2*pi )-pi
Tenga en cuenta que él está usando "TC" para denotar el rumbo verdadero (en radianes las agujas del reloj a partir del Norte) y las distancias que él da son en radianes de arco a lo largo de la superficie de la tierra. Esto se explica (junto con fórmulas para convertir ida y vuelta de millas náuticas) en la primera sección de la Formulary. Además, echa un vistazo a las "Notas de aplicación" y "ejemplos resueltos" en esa página.