Lat / Lon + Distância + Direção -> Lat / Lon

Então: Eu tenho a seguinte função, adaptada de uma fórmula encontrada online, que usa duas coordenadas lat / lon e encontra a distância entre elas em milhas (ao longo de uma Terra 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;
    }

Tanto quanto eu posso dizer, isso funciona muito bem.

O que eu preciso é de uma segunda função que, usando exatamente o mesmo modelo da geometria da Terra, pegue um único par lat / lon [A], um rumo e uma distância, e emita um novo par lat / lon [B] de modo que se você começou no ponto [A] e percorreu a distância especificada no cabeçalho, você terminaria no ponto [B].

É aqui que o fato de minhas habilidades em geometria me terem deixado inteiramente em jogo :)

Qualquer ajuda seria muito apreciada!

Obrigado, -Dan

questionAnswers(1)

yourAnswerToTheQuestion