Distance entre deux points du globe (précision ~60 m!)

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Huitbit
Messages : 940
Inscription : jeu. 08/déc./2005 5:19
Localisation : Guadeloupe

Distance entre deux points du globe (précision ~60 m!)

Message par Huitbit »

Bonjour!
J'ai reçu le livre de Jean Meeus sur l'astronomie.
Il est bourré de bonnes choses(le forum en profitera, bien sûr :wink: ).

Grace au forum j'ai découvert Géoportail (merci Forum :P )

Voilà un exemple de formule que nous devons à un certain H. Andoyer
Le programme est brut mais je suis sûr que les pros du gadget peuvent en faire un truc sympa :wink:
(Je n'ai simplifié aucune formules pour rester fidèle au document)

Image
(sur la photo, un fort(le fort Delgrès) construit d'après les plans de Vauban pour résister aux anglais!!!! C'est à 1 km de chez moi)

Distance entre le Fort Delgrès et l'Observatoire de Paris
(pour les conversions : notation décimale=heures+minutes/60+secondes/3600)

Code : Tout sélectionner

;auteur Huitbit d'après le livre de Jean Meeus "Astronomical Algorithms"
;pb v4.02 
;Calcul de la  distance entre  deux points du globe (prise en compte de l'applatissement de la Terre>>précision 50-60m!)
;******************************************************************************************
;Coordonnées des points (source Géoportail pour phi2 et L2)
;pour une longitude Est ou une latitude Sud, rajouter un signe "-" dans la conversion sexagésimal>>décimal
;*****************************************************************************************
;Paris
L1.f=-(2+20/60+14/3600);longitude 2°20'14'' Est
phi1.f=(48+50/60+11/3600);latitude 48°50'11'' Nord

;Fort Delgrès (Basse-Terre en Guadeloupe)
L2.f=(61+43/60+21/3600);longitude 61°43'21'' Ouest
phi2.f=(15+59/60+14/3600);latitude 15°59'14'' Nord
;************************************************************************************************
;données
#a=6378.14;demi grand axe du globe terrestre
#f=1/298.257; coefficient prenant en  compte l'applatissement de la Terre
;***********************************************************************************************

;Variables intermédiaires
F.f=(phi1+phi2)/2
G.f=(phi1-phi2)/2
lambda.f=(L1-L2)/2
S.f=Pow(Sin(G*#PI/180),2)*Pow(Cos(lambda*#PI/180),2)+Pow(Cos(F*#PI/180),2)*Pow(Sin(lambda*#PI/180),2)
C.f=Pow(Cos(G*#PI/180),2)*Pow(Cos(lambda*#PI/180),2)+Pow(Sin(F*#PI/180),2)*Pow(Sin(lambda*#PI/180),2)
w.f=ATan(Sqr(S/C)); tan w = sqr(S/C)
R.f=Sqr(S*C)/w
D.f=2*w*#a
H1.f=(3*R-1)/(2*C)
H2.f=(3*R+1)/(2*S)
;*********************************************************************************************************************
;résultat final
distance.f=D*(1+#f*H1*Pow(Sin(F*#PI/180),2)*Pow(Cos(G*#PI/180),2)-#f*H2*Pow(Cos(F*#PI/180),2)*Pow(Sin(G*#PI/180),2))

Debug "******************************************"
Debug "distance="+StrF(distance)+" km"
Debug "******************************************"
Hasta la vista!

PS: c'est pas le même calcul pour Air France
distance=prix de l'avion / (nombre légal de passagers+ sièges rajoutés dans tous les coins)+prix du baril de pétrole*(nombre légal de passagers+ sièges rajoutés dans tous les coins)+prix des lunettes de soleil du pilote+........=$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

PS: "^"pour les puissances ça serait cool :roll: !

PS:Maintenant, il va falloir programmer plus pour produire plus de codes :twisted: :twisted: :twisted:
Elevé au MSX !
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

Message par Frenchy Pilou »

Louables efforts :)
Regarde ce que donne Google Earth au cm :)
J'ai dû me tromper d'un pixel en cliquant à la souris car j'ai une légère différence entre l'aller et retour !
Par contre je ne sais pas pourquoi il y a 7 Kms d'écart d'avec ton résultat! :roll:
******************************************
distance=6792.629395 km
******************************************
J'ai tracé une "droite"
est-elle loxodromique ou orthodromique, ou encore autre chose je dois dire que je ne me rappelle plus toutes ces petites différences :)

La version grauite ne donne pas accès au GPS :(
Ici seule la "règle" est possible! C'est déjà pas si mal :)
Image
Image
Avatar de l’utilisateur
Huitbit
Messages : 940
Inscription : jeu. 08/déc./2005 5:19
Localisation : Guadeloupe

Message par Huitbit »

Le livre donne comme exemple:
distance géodésique entre ce même observatoire et celui de l'observatoire naval de Washington D.C
lat:+77°03'56''
long:+38°55'17''
résultat programme(livre) :
F=+48.8788889
G=4.9575000
lambda=-39.7013889
S=0.21642696
C=0.78357304
w=0.48387987
R=08510555
D=6172.507
***************************
distance=6181.63 km
(distance comparée avec la valeur réelle, ~50m de différence)


résultat programme(purebasic) :
F=43.878891
G=4.957499
lambda=-39.701385
S=0.216427
C=0.783573
w=0.483880
R=0.851056
D=6172.506836
******************************************
distance=6181.628418 km

Les valeurs des constantes intermédiaires sont voisines :? , cela doit venir de la définition de la distance calculée.

Je vais regarder ça quand j'aurai un moment!

Merci M'sieur Pilou!
Dernière modification par Huitbit le lun. 07/mai/2007 20:13, modifié 1 fois.
Elevé au MSX !
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

tu peux aussi utiliser les doubles pour améliorer la précision des calculs.
Et remplacer Pow(x,2) par x*x.

Je ne suis pas sûr mais je crois que Pow() non seulement est moins rapide qu'une simple multiplication, mais en plus il fait des approximations.
A vérifier !!!

Il parait que Pow() permet d'élever n'importe quel x à n'importe quelle puissance y. Ainsi, le calcul n'est pas fait de façon itérative comme pour les puissances entières mais fait référence aux exponentielles et donc aux séries entières. Du coup le résultat est approché et plus lent qu'une simple multiplication.
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Avatar de l’utilisateur
Huitbit
Messages : 940
Inscription : jeu. 08/déc./2005 5:19
Localisation : Guadeloupe

Message par Huitbit »

@Comtois
F=43.878891
G=4.957499
lambda=-39.701385
S=0.216427
C=0.783573
w=0.483880
R=0.851056
D=6172.506836
******************************************
distance=6181.628418 km
******************************************
Pas de changement en remplaçant "pow()"...

@Frenchy Pilou
...par contre j'ai l'impression que Google Earth considère que la Terre est ronde(presque ronde)!
If not great accuracy is needed, we may consider the Earth as being spherical with a mean radius of 6371 kilometers...
puis l'auteur propose une formule simplifiée(voir code ci-dessous):
>>calcul approché: 6788 km( rappel calculs précédents: distance=6792.629395 km; google>>>6785.0361042 km)
Ce résultat se rapproche étrangement, Google doit utiliser une formule mixte (la formule ci-dessous perd en précision quand la distance est petite, on ne peut pas toujours l'utiliser).

Code : Tout sélectionner

;Paris
L1.f=-(2+20/60+14/3600)*#PI/180;longitude 2°20'14'' Est
phi1.f=(48+50/60+11/3600)*#PI/180;latitude 48°50'11'' Nord

;Fort Delgrès (Basse-Terre en Guadeloupe)
L2.f=(61+43/60+21/3600)*#PI/180;longitude 61°43'21'' Ouest
phi2.f=(15+59/60+14/3600)*#PI/180;latitude 15°59'14'' Nord

;calcul intermédiaire
Cos_d.f= Sin(phi1)*Sin(phi2)+Cos(phi1)*Cos(phi2)*Cos(L1-L2) 
;résultat
Debug "distance="+Str(6371*ACos(Cos_d))+" km"
PS:
loxodromique ou orthodromique
Loxodromique le chemin le plus court est...
Elevé au MSX !
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

Message par Frenchy Pilou »

Au fait question triviale: quand un point est repéré sur le globe par ses latitude et longitude, son altitude est-elle prise en compte par ces valeurs?

Il y a quand même plus de 8 kms entre le sommet de l'Everest et le bord de la plage :)
Avatar de l’utilisateur
Huitbit
Messages : 940
Inscription : jeu. 08/déc./2005 5:19
Localisation : Guadeloupe

Message par Huitbit »

Au fait question triviale: quand un point est repéré sur le globe par ses latitude et longitude, son altitude est-elle prise en compte par ces valeurs?
D'après le bouquin, non. Seule la verticale du lieu compte

Mais...

Un "patch" est prévu dans le livre pour ce genre de situation (il fait le calcul des modifications à effectuer avec les coordonnées de l'observatoire de Palomar à 1706 m)
Apparemment ce calcul est utile uniquement pour les parallaxes diurnes, les occultations et les éclipses.
Le reste du temps les distances sont évaluées au niveau de la mer.
JUSTE POUR "RIRE" 8O :
Calculation times (in seconds) of the three sorting algorithms on the HP-85 microcomputer:
Pour 100 éléments à trier(pour 1000 seul le quicksort s'en sort avec 218 s):
simple sort :104.3 s
better:44.6 s
quicksort:14.6s

Idem avec un big computer pour 1000 éléments:
simple sort :13 s
better:10 s
quicksort:<1s

Il y a pas si longtemps(fin des années 70), Astronome, c'était un véritable sacerdoce!


Hasta la vista!
Elevé au MSX !
lewkey
Messages : 45
Inscription : jeu. 26/avr./2007 20:39

Message par lewkey »

pas si longtemps!!! ça fait quand même déjà 40 ans!!!!! et ces 15 dernières années, les ordinateur ont grandement évolués
Avatar de l’utilisateur
Huitbit
Messages : 940
Inscription : jeu. 08/déc./2005 5:19
Localisation : Guadeloupe

Message par Huitbit »

pas si longtemps!!! ça fait quand même déjà 40 ans!!!!! et ces 15 dernières années, les ordinateur ont grandement évolués
Fin 70, ça fait un chti peu moins que 40 ans!
Il y avait une vie avant le PC :roll:
:wink:
@+
Elevé au MSX !
Répondre