Calcul de coordonnees spheriques

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
nessus
Messages: 4
Enregistré le: 02 Déc 2014, 10:15

calcul de coordonnees spheriques

par nessus » 02 Déc 2014, 10:32

Bonjour à tous
je cherche à calculer les coordonnées lat et long résultants de l'intersection de 2 cercles l'un de centre (lat1,lon1) de rayon R1 et l'autre de centre (lat2;lon2) de rayon R2.

les cercles en question sont des Small et non des Great circles.

les distances sont en Nm
je voudrais m'inspirer des calculs fait ci dessus

http://gis.stackexchange.com/questions/48937/how-to-calculate-the-intersection-of-2-circles
mais il y'a des calculs intermédiaires que je ne pige pas
je dois mettre le tout dans un programme VBA pour EXCEL, ou en C

un autre site propose des solutions graphiques:http://geo.javawa.nl/coordcalc/index_en.html

donc si quelqu'un pourrait m'expliquer comment les obtenir

merci



Avatar de l’utilisateur
Ben314
Le Ben
Messages: 21709
Enregistré le: 11 Nov 2009, 21:53

par Ben314 » 02 Déc 2014, 12:33

Salut,
C'est quoi un "Small cercle" et un "Great cercle" ?
Qui n'entend qu'un son n'entend qu'une sonnerie. Signé : Sonfucius

BiancoAngelo
Membre Rationnel
Messages: 585
Enregistré le: 12 Déc 2011, 23:06

par BiancoAngelo » 02 Déc 2014, 12:40

nessus a écrit:Bonjour à tous
je cherche à calculer les coordonnées lat et long résultants de l'intersection de 2 cercles l'un de centre (lat1,lon1) de rayon R1 et l'autre de centre (lat2;lon2) de rayon R2.

les cercles en question sont des Small et non des Great circles.

les distances sont en Nm
je voudrais m'inspirer des calculs fait ci dessus

http://gis.stackexchange.com/questions/48937/how-to-calculate-the-intersection-of-2-circles
mais il y'a des calculs intermédiaires que je ne pige pas
je dois mettre le tout dans un programme VBA pour EXCEL, ou en C

un autre site propose des solutions graphiques:http://geo.javawa.nl/coordcalc/index_en.html

donc si quelqu'un pourrait m'expliquer comment les obtenir

merci


Bonjour,

Donc pour résumer l'article, il faut suivre les étapes suivantes :

1) Convertir les latitudes/longitudes en coordonnées géométriques, pour trouver le centre des cercles.
On utilise alors la formule :
x = cos(lon) cos(lat)
y = sin(lon) cos(lat)
z = sin(lat).
Puisque est considéré le rayon de la Terre égal à 1.
(même si ce n'est pas le cas, il suffit toujours de prendre les rayons respectifs divisé par celui de la Terre... (diamètre théorique bien sûr)).

2) Tu convertis les miles nautiques en radian en multipliant par pi/180 * 1/60 (d'après la définition) et on note ça r.

3) On considère que les cercles sont respectivement les intersections de la Terre avec les sphères centrées en cos(r)*(x,y,z) de rayon sin (r).
C'est ça à mon avis qu'il faut bien saisir, il faut faire un dessin d'une coupe transversale de la Terre, dans le sens transversal aux disques.
(Il faut bien saisir qu'on ne peut pas utiliser le rayon de base car on n'est pas sur une surface plane). Malgré tout, ce résultat est facile à trouver car, grâce à la coupe, on se retrouve dans de la géométrie plane.

4) Maintenant, on doit connaître les plans qui contiennent les deux cercles.
Pour trouver une équation, il suffit de voir que le plan qui contient le cercle est orthogonal au vecteur (x,y,z) (point et vecteur ont ici les mêmes coordonnées, vu qu'on est sur une sphère) et qui passe bien sûr par le centre.
Du coup, en considérant qu'il existe un point unique X0 qui est une combinaison linéaire de X1 et X2 et en prenant a et b les coefficients associés (on rappelle que l'équation du plan s'obtient grâce à un vecteur normal... et que, ici, comme on choisit une combinaison linéaire de ces deux vecteurs CHOISIS, on a bien l'unicité (il y a sinon en effet une infinité de vecteurs normaux)), on obtient :

cos(r1) = X . X1 = (a*X1 + b*X2).x1 = a + b*(X2.X1) = a + b*(X1.X2)
cos(r2) = X . X2 = (a*X1 + b*X2).x2 = a*(X1.X2) + b

avec "." le produit scalaire, en se rappelant que X1.X1 = X2.X2 = 1 car nous sommes sur une sphère de rayon 1.

Ce système, quand il a des solutions, donne, en posant q = x1.x2
a = (cos(r1) - cos(r2)*q) / (1 - q^2),
b = (cos(r2) - cos(r1)*q) / (1 - q^2).

q² = 1 ne donne pas de solutions, il faut interpréter et c'est plutôt facile de comprendre pourquoi le produit scalaire ne doit pas faire 1.

On a donc maintenant le point X0.
Il nous reste à trouver la droite (intersection des deux plans)...

5) Encore une fois, on trouve cette droite grâce à un vecteur n, normal aux deux vecteurs normaux des deux plans (des deux disques...), on peut donc utiliser le produit vectoriel.

n = X1^X2,

6) Le paramètre t nous permet d'écrire qu'un point de la droite d'intersection est sous la forme :

X0 + t*n.

Maintenant, ces points doivent être sur la Terre, donc la norme de ces vecteurs (je rappelle, ici point ~ vecteur) doit faire 1.

Elle vérifie donc 1 = (X0 + t*n).(X0 + t*n) = X0.X0 + t²*n^n en se rappelant que X0 et n sont orthogonaux car X0 combinaison de X1 et X2.
(C'est la distance au carré, vu que 1² = 1).

Donc maintenant, on a t = + ou - racine((1 - x0.x0)/n.n).

On a donc nos deux points d'intersection Xi(1,2) = X0 + t(1,2) * n

7) Si on veut repasser en système (lat,long), on fait :

lon = ArcTan(xi,yi)
lat = ArcTan(Sqrt[xi^2+yi^2], zi)

(ce ne sont que les formules de passage d'un système à l'autre).

avec Xi = (xi,yi,zi).




En espérant qu'avoir tout redétaillé t'éclaire...

nessus
Messages: 4
Enregistré le: 02 Déc 2014, 10:15

par nessus » 02 Déc 2014, 14:23

merci pour ta réponse
je cherche un exemple précis pour illustrer cette méthode je ne suis plus à l'aise dans le calcul matriciel et vectoriel (des vieux souvenirs pour moi).
soit un point A ( latA=38.76195 ; lonA=-27.09083 R1=781 Nm)
et un point B( latB=47.61862 ; lonB= -52.75242 R2=781 Nm)

comment aboutir au résultat final avec les différents calculs intermédiaires .

je sais le faire graphiquement ou sous MATLAB
le resultat est X1=(36.63741;-43.29550) et X2 (50.97362;-33.47354) en degrés bien sur

BiancoAngelo
Membre Rationnel
Messages: 585
Enregistré le: 12 Déc 2011, 23:06

par BiancoAngelo » 02 Déc 2014, 15:13

Soit un point A ( latA=38.76195 ; lonA=-27.09083 R1=781 Nm)
et un point B( latB=47.61862 ; lonB= -52.75242 R2=781 Nm)

Alors, si je reprends point par point...

1) Convertir les latitudes/longitudes en coordonnées géométriques, pour trouver le centre des cercles.
On utilise alors la formule :
x = cos(lon) cos(lat)
y = sin(lon) cos(lat)
z = sin(lat).
Puisque est considéré le rayon de la Terre égal à 1.
(même si ce n'est pas le cas, il suffit toujours de prendre les rayons respectifs divisé par celui de la Terre... (diamètre théorique bien sûr)).



----> X1 = (0.6942037651, -0.3551018263, 0.6260861166)

X2 = (0.4079832364, -0.5365722276, 0.7386744366)


2) Tu convertis les miles nautiques en radian en multipliant par pi/180 * 1/60 (d'après la définition) et on note ça r.

----> r1 = 0.22718369096

r2 = 0.22718369096



3) On considère que les cercles sont respectivement les intersections de la Terre avec les sphères centrées en cos(r)*(x,y,z) de rayon sin (r).
C'est ça à mon avis qu'il faut bien saisir, il faut faire un dessin d'une coupe transversale de la Terre, dans le sens transversal aux disques.
(Il faut bien saisir qu'on ne peut pas utiliser le rayon de base car on n'est pas sur une surface plane). Malgré tout, ce résultat est facile à trouver car, grâce à la coupe, on se retrouve dans de la géométrie plane.

4) Maintenant, on doit connaître les plans qui contiennent les deux cercles.
Pour trouver une équation, il suffit de voir que le plan qui contient le cercle est orthogonal au vecteur (x,y,z) (point et vecteur ont ici les mêmes coordonnées, vu qu'on est sur une sphère) et qui passe bien sûr par le centre.
Du coup, en considérant qu'il existe un point unique X0 qui est une combinaison linéaire de X1 et X2 et en prenant a et b les coefficients associés (on rappelle que l'équation du plan s'obtient grâce à un vecteur normal... et que, ici, comme on choisit une combinaison linéaire de ces deux vecteurs CHOISIS, on a bien l'unicité (il y a sinon en effet une infinité de vecteurs normaux)), on obtient :

cos(r1) = X . X1 = (a*X1 + b*X2).x1 = a + b*(X2.X1) = a + b*(X1.X2)
cos(r2) = X . X2 = (a*X1 + b*X2).x2 = a*(X1.X2) + b

avec "." le produit scalaire, en se rappelant que X1.X1 = X2.X2 = 1 car nous sommes sur une sphère de rayon 1.

Ce système, quand il a des solutions, donne, en posant q = x1.x2
a = (cos(r1) - cos(r2)*q) / (1 - q^2),
b = (cos(r2) - cos(r1)*q) / (1 - q^2).


-----------> q = X1.X2 = 0.93623508621

Donc a = 0.50319539961 et b = 0.50319539961.


q² = 1 ne donne pas de solutions, il faut interpréter et c'est plutôt facile de comprendre pourquoi le produit scalaire ne doit pas faire 1.

On a donc maintenant le point X0.



------> X0 = (0.55461542866, -0.44868628187, 0.68674123193).


Il nous reste à trouver la droite (intersection des deux plans)...

5) Encore une fois, on trouve cette droite grâce à un vecteur n, normal aux deux vecteurs normaux des deux plans (des deux disques...), on peut donc utiliser le produit vectoriel.

n = X1^X2,


------------> n = (0.07363578077571177558,-0.25735793495526547842,-0.22761486830258949944)


6) Le paramètre t nous permet d'écrire qu'un point de la droite d'intersection est sous la forme :

X0 + t*n.

Maintenant, ces points doivent être sur la Terre, donc la norme de ces vecteurs (je rappelle, ici point ~ vecteur) doit faire 1.

Elle vérifie donc 1 = (X0 + t*n).(X0 + t*n) = X0.X0 + t²*n^n en se rappelant que X0 et n sont orthogonaux car X0 combinaison de X1 et X2.
(C'est la distance au carré, vu que 1² = 1).

Donc maintenant, on a t = + ou - racine((1 - x0.x0)/n.n).

On a donc nos deux points d'intersection Xi(1,2) = X0 + t(1,2) * n

-------------> n.n = 0.12346386316729250275
X0.X0 = 0.98053117287877469162

d'où t1 = 0.39710006981
et t2 = -0.39710006981

D'où Xi1 = (0.58385620234, -0.5508831358 , 0.59635535183)
et Xi2 = (0.52537465497, -0.34648942793, 0.77712711202)


Après, faut repasser en coordonnées sphériques.

Arcsin(0.59635535183)*(180/pi) = 36.6°
Arctan (-0.5508831358 /0.58385620234)*180/pi = -43,4°

et pour le 2eme je trouve :

51° et -33,4°.


J'ai arrondi.

Bon, ça fonctionne, ouf.
Alors, après, si les décimales ne sont pas les mêmes, c'est parce que, comme mentionné dans ton article en anglais, il faut prendre beaucoup de décimales tout le long, car certains calculs font des opérations sur des nombres très proches de 1...


Voilà, maintenant, tu as tout ce qu'il te faut pour bien comprendre !

BiancoAngelo
Membre Rationnel
Messages: 585
Enregistré le: 12 Déc 2011, 23:06

par BiancoAngelo » 02 Déc 2014, 15:29

Je ne comprends pas pourquoi ça fonctionne pour le premier angle mais que ça inverse les autres.

Un signe quelque part a du se glisser...

BiancoAngelo
Membre Rationnel
Messages: 585
Enregistré le: 12 Déc 2011, 23:06

par BiancoAngelo » 02 Déc 2014, 15:32

BiancoAngelo a écrit:Je ne comprends pas pourquoi ça fonctionne pour le premier angle mais que ça inverse les autres.

Un signe quelque part a du se glisser...


J'ai mis un sinus à la place d'un cosinus au tout début :mur: :cry: :triste:

nessus
Messages: 4
Enregistré le: 02 Déc 2014, 10:15

par nessus » 02 Déc 2014, 16:02

merci infiniment

Avatar de l’utilisateur
Ben314
Le Ben
Messages: 21709
Enregistré le: 11 Nov 2009, 21:53

par Ben314 » 02 Déc 2014, 16:47

Ben314 a écrit:Salut,
C'est quoi un "Small cercle" et un "Great cercle" ?
Et la réponse a la question, on peut pas l'avoir... :cry:

Sinon, j'ai pas regaré de près les méthodes proposés par les autres, mais perso., au lieu de dire qu'un cercle centré en M sur la sphère c'était l'intersection de la sphère et d'une autre sphère, ça m'aurais semblé bien plus naturel (et plus simple dans les calculs) de dire que c'était l'intersection de la sphère (de départ) et d'un plan de vecteur normal OM dont on a "en claquant des doigts" l'équation.
L'intersection de deux cercle se résume alors à chercher l'intersection de deux plans dont on connait les équations.
Qui n'entend qu'un son n'entend qu'une sonnerie. Signé : Sonfucius

BiancoAngelo
Membre Rationnel
Messages: 585
Enregistré le: 12 Déc 2011, 23:06

par BiancoAngelo » 02 Déc 2014, 17:03

Ben314 a écrit:Et la réponse a la question, on peut pas l'avoir... :cry:

Sinon, j'ai pas regaré de près les méthodes proposés par les autres, mais perso., au lieu de dire qu'un cercle centré en M sur la sphère c'était l'intersection de la sphère et d'une autre sphère, ça m'aurais semblé bien plus naturel (et plus simple dans les calculs) de dire que c'était l'intersection de la sphère (de départ) et d'un plan de vecteur normal OM dont on a "en claquant des doigts" l'équation.
L'intersection de deux cercle se résume alors à chercher l'intersection de deux plans dont on connait les équations.


C'est exactement la résolution que j'ai écrite Ben, qui résume l'article.

nessus
Messages: 4
Enregistré le: 02 Déc 2014, 10:15

par nessus » 02 Déc 2014, 17:04

désolais je repris la terminologie de navigation.
en fait tu as raison sur le formalisme mathématique.

Avatar de l’utilisateur
Ben314
Le Ben
Messages: 21709
Enregistré le: 11 Nov 2009, 21:53

par Ben314 » 02 Déc 2014, 17:21

Je t'avoue humblement que j'avais pas tout lu (au cas où tu t'en serais pas douté... :lol3: )
Je m'était arrêté là :
BiancoAngelo a écrit:3) On considère que les cercles sont respectivement les intersections de la Terre avec les sphères centrées en cos(r)*(x,y,z) de rayon sin (r).
C'est ça à mon avis qu'il faut bien saisir, il faut faire un dessin d'une coupe transversale de la Terre, dans le sens transversal aux disques.
(Il faut bien saisir qu'on ne peut pas utiliser le rayon de base car on n'est pas sur une surface plane). Malgré tout, ce résultat est facile à trouver car, grâce à la coupe, on se retrouve dans de la géométrie plane.
donc j'ai pas bien compris ni le sens ni l'intérêt.
Par contre, a partir du 4) je comprend tout... :zen:)
Qui n'entend qu'un son n'entend qu'une sonnerie. Signé : Sonfucius

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 27 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite