Niet gezocht of niet gevonden?
Formula: ? = atan2( sin ?? ? cos ?2 , cos ?1 ? sin ?2 ? sin ?1 ? cos ?2 ? cos ?? )
where ?1,?1 is the start point, ?2,?2 the end point (?? is the difference in longitude)
Dit zou de initiële bearing moeten geven tussen twee punten.
(Er zijn overigens vele verschillende manieren. Je kunt bijvoorbeeld bij korte afstanden ook een simpelere formule gebruiken.)
Delphi Code:
function modulo(x, y: Extended): Extended;
var
d: Extended;
begin
d := x / y;
Result := (d - floor(d)) * y;
end;
function degrees(Rads: Extended): Extended;
begin
Result := Rads * (180 / Pi);
end;
function atan2(y: Extended; x: Extended): Extended; assembler;
asm
fld [y]
fld [x]
fpatan
end;
function InitialBearing(lat1, lon1, lat2, lon2: double): double; // in graden
begin
Result := modulo(degrees(atan2(
sin(lon2 - lon1) * cos(lat2),
cos(lat1) * sin(lat2) -
sin(lat1) * cos(lat2) * cos(lon2 - lon1))), 360);
end;
Bookmarks