Une des fonctions les plus communes de la géographie et des systèmes modernes, c'est le calcul de la distance géographique entre deux coordonnées de Longitude et de Latitude. Il n'y a aucune nécessité de grande connaissance en trigonométrie pour arriver à se genre de calcul dans le format qu'on le souhaite, Km, Miles ou Miles Nautiques. Ainsi, si vous savez les coordonnées suivantes :
Ville | Latitude | Longitude |
---|---|---|
Montréal | 45 31N | 73 34O |
Paris | 48 50N | 2 20E |
A l'aide du code source DarkBASIC suivant, vous trouvez la réponse que vous souhaitez :
PRINT "Distance entre Montréal et Paris en Km: ";CoordToDeltaKm(45, 31, "N", 73, 34, "O", 48, 50, "N", 2, 20, "E")
PRINT "Distance entre Montréal et Paris en Miles: ";CoordToDeltaStatuteMiles(45, 31, "N", 73, 34, "O", 48, 50, "N", 2, 20, "E")
PRINT "Distance entre Montréal et Paris en Miles Nautique: ";CoordToDeltaNauticalMiles(45, 31, "N", 73, 34, "O", 48, 50, "N", 2, 20, "E")
WAIT KEY
FUNCTION CosRad(a#)
ReturnValue#=COS(57.295779513 * a#)
ENDFUNCTION ReturnValue#
FUNCTION SinRad(a#)
ReturnValue#=SIN(57.295779513 * a#)
ENDFUNCTION ReturnValue#
FUNCTION ArcCosRad(a#)
ReturnValue#=0.017453292520 * ACos(a#)
ENDFUNCTION ReturnValue#
FUNCTION CoordToDeltaKm(Q1Latitude, Q1LatiDeg, Q1LatiDirection$, Q1Longitude, Q1LongDeg, Q1LongDirection$, Q2Latitude, Q2LatiDeg, Q2LatiDirection$, Q2Longitude, Q2LongDeg, Q2LongDirection$)
PI# = 3.141592653589793
a1# = (Q1Latitude + (Q1LatiDeg / 60.0)) * PI# / 180.0
IF Q1LatiDirection$ = "N" THEN a1# = -a1#
b1# = (Q1Longitude + (Q1LongDeg / 60.0)) * PI# / 180.0
IF Q1LongDirection$ = "O" THEN b1# = -b1#
a2# = (Q2Latitude + (Q2LatiDeg / 60.0)) * PI# / 180.0
IF Q2LatiDirection$ = "N" THEN a2# = -a2#
b2# = (Q2Longitude + (Q2LongDeg / 60.0)) * PI# / 180.0
IF Q2LongDirection$ = "O" THEN b2# = -b2#
RawDelta# = ArcCosRad(CosRad(a1#) * CosRad(b1#) * CosRad(a2#) * CosRad(b2#) + CosRad(a1#) * SinRad(b1#) * CosRad(a2#) * SinRad(b2#) + SinRad(a1#) * SinRad(a2#))
ReturnValue# = RawDelta# * 6378.0
ENDFUNCTION ReturnValue#
FUNCTION CoordToDeltaNauticalMiles(Q1Latitude, Q1LatiDeg, Q1LatiDirection$, Q1Longitude, Q1LongDeg, Q1LongDirection$, Q2Latitude, Q2LatiDeg, Q2LatiDirection$, Q2Longitude, Q2LongDeg, Q2LongDirection$)
PI# = 3.141592653589793
a1# = (Q1Latitude + (Q1LatiDeg / 60.0)) * PI# / 180.0
IF Q1LatiDirection$ = "N" THEN a1# = -a1#
b1# = (Q1Longitude + (Q1LongDeg / 60.0)) * PI# / 180.0
IF Q1LongDirection$ = "O" THEN b1# = -b1#
a2# = (Q2Latitude + (Q2LatiDeg / 60.0)) * PI# / 180.0
IF Q2LatiDirection$ = "N" THEN a2# = -a2#
b2# = (Q2Longitude + (Q2LongDeg / 60.0)) * PI# / 180.0
IF Q2LongDirection$ = "O" THEN b2# = -b2#
RawDelta# = ArcCosRad(CosRad(a1#) * CosRad(b1#) * CosRad(a2#) * CosRad(b2#) + CosRad(a1#) * SinRad(b1#) * CosRad(a2#) * SinRad(b2#) + SinRad(a1#) * SinRad(a2#))
ReturnValue# = RawDelta# * 3443.9
ENDFUNCTION ReturnValue#
FUNCTION CoordToDeltaStatuteMiles(Q1Latitude, Q1LatiDeg, Q1LatiDirection$, Q1Longitude, Q1LongDeg, Q1LongDirection$, Q2Latitude, Q2LatiDeg, Q2LatiDirection$, Q2Longitude, Q2LongDeg, Q2LongDirection$)
PI# = 3.141592653589793
a1# = (Q1Latitude + (Q1LatiDeg / 60.0)) * PI# / 180.0
IF Q1LatiDirection$ = "N" THEN a1# = -a1#
b1# = (Q1Longitude + (Q1LongDeg / 60.0)) * PI# / 180.0
IF Q1LongDirection$ = "O" THEN b1# = -b1#
a2# = (Q2Latitude + (Q2LatiDeg / 60.0)) * PI# / 180.0
IF Q2LatiDirection$ = "N" THEN a2# = -a2#
b2# = (Q2Longitude + (Q2LongDeg / 60.0)) * PI# / 180.0
IF Q2LongDirection$ = "O" THEN b2# = -b2#
RawDelta# = ArcCosRad(CosRad(a1#) * CosRad(b1#) * CosRad(a2#) * CosRad(b2#) + CosRad(a1#) * SinRad(b1#) * CosRad(a2#) * SinRad(b2#) + SinRad(a1#) * SinRad(a2#))
ReturnValue# = RawDelta# * 3963.1
ENDFUNCTION ReturnValue#
on obtiendra le résultat suivant:
Distance entre Montréal et Paris en Km: 5510.16761889Distance entre Montréal et Paris en Miles: 3423.85470217
Distance entre Montréal et Paris en Miles Nautique: 2975.30044884
Dernière mise à jour : Samedi, le 4 octobre 2008