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

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top