Lat / Lon + Distancia + Rumbo -> Lat / Lon

Entonces: tengo la siguiente función, adaptada de una fórmula que se encuentra en línea, que toma dos coordenadas lat / lon y encuentra la distancia entre ellas 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 puedo decir, esto funciona bien.

Lo que necesito es una segunda función que, usando exactamente el mismo modelo de la geometría de la Tierra, tome un solo par lat / lon [A], un rumbo y una distancia, y genere un nuevo par lat / lon [B] de modo que si comenzaste en el punto [A] y recorriste la distancia dada en el rumbo dado, terminarías en el punto [B].

Aquí es donde entra en juego el hecho de que mis habilidades de geometría me han dejado por completo :)

Cualquier ayuda sería muy apreciada!

Gracias -Dan

Respuestas a la pregunta(1)

Su respuesta a la pregunta