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 QuickBASIC/QBasic suivant, vous trouvez la réponse que vous souhaitez :
- DECLARE FUNCTION ACos! (a!)
- DECLARE FUNCTION CoordToDeltaKm! (Q1Latitude!, Q1LatiDeg!, Q1LatiDirection$, Q1Longitude!, Q1LongDeg!, Q1LongDirection$, Q2Latitude!, Q2LatiDeg!, Q2LatiDirection$, Q2Longitude!, Q2LongDeg!, Q2LongDirection$)
- DECLARE FUNCTION CoordToDeltaNauticalMiles! (Q1Latitude!, Q1LatiDeg!, Q1LatiDirection$, Q1Longitude!, Q1LongDeg!, Q1LongDirection$, Q2Latitude!, Q2LatiDeg!, Q2LatiDirection$, Q2Longitude!, Q2LongDeg!, Q2LongDirection$)
- DECLARE FUNCTION CoordToDeltaStatuteMiles! (Q1Latitude!, Q1LatiDeg!, Q1LatiDirection$, Q1Longitude!, Q1LongDeg!, Q1LongDirection$, Q2Latitude!, Q2LatiDeg!, Q2LatiDirection$, Q2Longitude!, Q2LongDeg!, Q2LongDirection$)
-
- CONST PI = 3.141592653589793#
-
- PRINT "Distance entre Montréal et Paris en Km: " + STR$(CoordToDeltaKm!(45, 31, "N", 73, 34, "O", 48, 50, "N", 2, 20, "E"))
- PRINT "Distance entre Montréal et Paris en Miles: " + STR$(CoordToDeltaStatuteMiles(45, 31, "N", 73, 34, "O", 48, 50, "N", 2, 20, "E"))
- PRINT "Distance entre Montréal et Paris en Miles Nautique: " + STR$(CoordToDeltaNauticalMiles(45, 31, "N", 73, 34, "O", 48, 50, "N", 2, 20, "E"))
-
- FUNCTION ACos (a)
- IF ABS(a) = 1 THEN
- ACos = (1 - a) * PI / 2
- ELSE
- ACos = ATN(-a / SQR(1 - a * a)) + 2 * ATN(1)
- END IF
- END FUNCTION
-
- FUNCTION CoordToDeltaKm! (Q1Latitude, Q1LatiDeg, Q1LatiDirection$, Q1Longitude, Q1LongDeg, Q1LongDirection$, Q2Latitude, Q2LatiDeg, Q2LatiDirection$, Q2Longitude, Q2LongDeg, Q2LongDirection$)
- a1 = (Q1Latitude + (Q1LatiDeg / 60)) * PI / 180
- IF Q1LatiDirection$ = "N" THEN
- a1 = -a1
- END IF
- b1 = (Q1Longitude + (Q1LongDeg / 60)) * PI / 180
- IF Q1LongDirection$ = "O" THEN
- b1 = -b1
- END IF
- a2 = (Q2Latitude + (Q2LatiDeg / 60)) * PI / 180
- IF Q2LatiDirection$ = "N" THEN
- a2 = -a2
- END IF
- b2 = (Q2Longitude + (Q2LongDeg / 60)) * PI / 180
- IF Q2LongDirection$ = "O" THEN
- b2 = -b2
- END IF
- RawDelta = ACos(COS(a1) * COS(b1) * COS(a2) * COS(b2) + COS(a1) * SIN(b1) * COS(a2) * SIN(b2) + SIN(a1) * SIN(a2))
- CoordToDeltaKm = RawDelta * 6378!
- END FUNCTION
-
- FUNCTION CoordToDeltaNauticalMiles (Q1Latitude, Q1LatiDeg, Q1LatiDirection$, Q1Longitude, Q1LongDeg, Q1LongDirection$, Q2Latitude, Q2LatiDeg, Q2LatiDirection$, Q2Longitude, Q2LongDeg, Q2LongDirection$)
- a1 = (Q1Latitude + (Q1LatiDeg / 60)) * PI / 180
- IF Q1LatiDirection$ = "N" THEN
- a1 = -a1
- END IF
- b1 = (Q1Longitude + (Q1LongDeg / 60)) * PI / 180
- IF Q1LongDirection$ = "O" THEN
- b1 = -b1
- END IF
- a2 = (Q2Latitude + (Q2LatiDeg / 60)) * PI / 180
- IF Q2LatiDirection$ = "N" THEN
- a2 = -a2
- END IF
- b2 = (Q2Longitude + (Q2LongDeg / 60)) * PI / 180
- IF Q2LongDirection$ = "O" THEN
- b2 = -b2
- END IF
- RawDelta = ACos(COS(a1) * COS(b1) * COS(a2) * COS(b2) + COS(a1) * SIN(b1) * COS(a2) * SIN(b2) + SIN(a1) * SIN(a2))
- CoordToDeltaNauticalMiles = RawDelta * 3443.9
- END FUNCTION
-
- FUNCTION CoordToDeltaStatuteMiles (Q1Latitude, Q1LatiDeg, Q1LatiDirection$, Q1Longitude, Q1LongDeg, Q1LongDirection$, Q2Latitude, Q2LatiDeg, Q2LatiDirection$, Q2Longitude, Q2LongDeg, Q2LongDirection$)
- a1 = (Q1Latitude + (Q1LatiDeg / 60)) * PI / 180
- IF Q1LatiDirection$ = "N" THEN
- a1 = -a1
- END IF
- b1 = (Q1Longitude + (Q1LongDeg / 60)) * PI / 180
- IF Q1LongDirection$ = "O" THEN
- b1 = -b1
- END IF
- a2 = (Q2Latitude + (Q2LatiDeg / 60)) * PI / 180
- IF Q2LatiDirection$ = "N" THEN
- a2 = -a2
- END IF
- b2 = (Q2Longitude + (Q2LongDeg / 60)) * PI / 180
- IF Q2LongDirection$ = "O" THEN
- b2 = -b2
- END IF
- RawDelta = ACos(COS(a1) * COS(b1) * COS(a2) * COS(b2) + COS(a1) * SIN(b1) * COS(a2) * SIN(b2) + SIN(a1) * SIN(a2))
- CoordToDeltaStatuteMiles = RawDelta * 3963.1
- END FUNCTION
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 : Mercredi, le 14 septembre 2016