Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#1 31-07-2017 11:02:47

Paskalo
Membre
Inscription : 05-03-2017
Messages : 11

Rotations et coordonnées sur une sphère

Bonjour à tous,

Je me permets de vous contacter pour un problème un peu particulier...

Mon but final est de déplacer des points géographiques sur le globe terrestre.

Pour cela, j'ai bien étudié les pages de wikipédia suivantes :

- Matrices de rotations (https://fr.wikipedia.org/wiki/Matrice_de_rotation)
- Coordonnées sphériques (https://fr.wikipedia.org/wiki/Coordonn% … 3%A9riques)

et, à l'aide de mes souvenirs de cours de math (il y a loin), et d'une bonne dose de patience, j'ai réussi à monter une feuille Excel me permettant de modifier les coordonnées (latitude et longitude) d'un point donné par une rotation en latitude puis en longitude (selon les axes appropriés : en appliquant les matrices Ry puis Rz, pour reprendre la notation des articles)

Tout semble bien fonctionner...

Il me reste un seul problème : point passer d'un point A ( lat_A; long_A ) à un point B ( lat_B ; long_B), je souhaite connaître quel est l'angle de chacune des rotations (en latitude puis en longitude) nécessaires.

On pourrait croire qu'il s'agit de oméga = lat_B - lat_A  et  phi = long_B - long_A. Eh bien non.

Je tourne les équations dans tous les sens, sans succès.

Comment trouver les fonctions f et g telles que :

omega = f( lat_A ; long_A ; lat_B ; long_B )
et
phi = f( lat_A ; long_A ; lat_B ; long_B ) ?

Merci d'avance !

----------- Avancement de la résolution -------

J'ai commencé par faire le produit de mes deux matrices? J'obtiens :

cos(Phi).cos(Théta)     -sin(Théta).cos(Phi)   sin(Phi)
sin(Théta)                    cos(Théta)                 0
-sin(Phi).cos(Théta)     sin(Phi).sin(Théta)     cos(Phi)

Donc, si j'ai bien compris, il faut que je me serve de cette matrice pour exprimer Phi et Théta en fonction de x,x',y,y',z,z' ?

Quelqu'un peut-il me le confirmer avant que je me lance dans le bain ?

------------ Avancement de la résolution (2) ---------------

J'ai essayé de me lancer, mais même si j'ai trois équations, deux inconnus (Phi et Théta), impossible d'avancer : j'ai des cosinus de partout...

----------------------------------------------------------------------

Dernière modification par Paskalo (01-08-2017 13:27:11)

Hors ligne

#2 01-08-2017 14:40:11

Yassine
Membre
Inscription : 09-04-2013
Messages : 988

Re : Rotations et coordonnées sur une sphère

Bonjour,
Ci-après une proposition d'approche.
Imaginons qu'on veuille partir d'un point $P(x,y,z)$ et aboutir au point $P'(x',y',z')$ en appliquant d'abord un changement de longitude, soit une rotation autour de l'axe $z$, puis un changement de latitude, c'est à dire une rotation autour de l'axe $x$ (attention, l'ordre est important, les rotations ne commutent pas en général).
On fait donc d'abord une projection des deux points sur le plan équatorial $(O,x,y)$ et on cherche l'angle $\theta$ mets les deux point sur le même méridien. Il s'agira alors de résoudre l'équation :
$\begin{pmatrix}
\cos\theta & -\sin\theta \\
\sin\theta & \cos\theta \end{pmatrix}
\begin{pmatrix}
\hat{x} \\
\hat{y}
\end{pmatrix} = \begin{pmatrix}
\hat{x}' \\
\hat{y}'
\end{pmatrix}$

où j'ai noté $\begin{pmatrix}
\hat{x} \\
\hat{y}
\end{pmatrix} = \dfrac{1}{\sqrt{x^2+y^2}}\begin{pmatrix}
x \\
y
\end{pmatrix}$ le vecteur normalisé en deux dimension (la projection des point $P$ et $P'$ tombe en général à l'intérieur du cercle equatorial) et idem pour les primes.

Ensuite, une fois calculé l'angle $\theta$, il faudra résoudre pour $\phi$ l'équation $R_x(\phi)R_z(\theta)\begin{pmatrix}x \\ y \\ z\end{pmatrix} = \begin{pmatrix}x' \\ y' \\ z'\end{pmatrix}$ où $R_x(\phi)$ est la matrice de rotation autour de l'axe $x$ et $R_z$ la rotation autour de l'axe $z$, avec l'angle calculé $\theta$ précédemment calculé.


L'ennui dans ce monde c'est que les idiots sont sûrs d'eux et les gens sensés pleins de doutes. B. Russel

Hors ligne

#3 01-08-2017 15:25:57

Paskalo
Membre
Inscription : 05-03-2017
Messages : 11

Re : Rotations et coordonnées sur une sphère

Merci Yassine pour vous être penché sur mon petit souci ! :-)

Je crois avoir saisi la méthode... à un détail près !

Pour ma part, dans l'état actuel de ma résolution, je passe d'abord par une rotation en latitude (Ry dans la fiche WP) puis en longitude (Rz itou).

Je ne vois pas comment vous passez de la matrice 3X3 à la matrice 2x2...

Si je suis votre méthode, comment "traduire" Ry en matrice 2x2 afin de trouver Phi ?

(l'étape suivante, je devrais pouvoir m'en sortir...)

Merci d'avance !

Hors ligne

#4 01-08-2017 15:46:13

Yassine
Membre
Inscription : 09-04-2013
Messages : 988

Re : Rotations et coordonnées sur une sphère

En fait, c'est la même approche.
On projette les deux points sur un plan orthogonal à l'axe de rotation.
Projection le long de l'axe $z$ : $(x,y,z) \mapsto (x,y)$
Projection le long de l'axe $x$ : $(x,y,z) \mapsto (y,z)$
Projection le long de l'axe $y$ : $(x,y,z) \mapsto (x,z)$

Ensuite, une fois projetés, l'équation est la même puisqu'il s'agit d'une rotation dans le plan (je fais juste attention que les vecteurs soient unitaires) :
$\begin{pmatrix} \cos\phi & \sin\phi \\ -\sin\phi & \cos\phi \end{pmatrix}  \begin{pmatrix} \hat{x} \\ \hat{z} \end{pmatrix} = \begin{pmatrix} \hat{x}' \\ \hat{z}' \end{pmatrix}$



Une fois résolue cette équation, on sait que la rotation dans l'espace aura le même angle. Dans si on choisit de faire une projection le long de $y$, qu'on trouve un angle $\phi$ qui convient, alors la matrice $R_y$ est la matrice de rotation autour de l'axe $y$ et d'angle $\phi$ :
$R_y(\phi) = \begin{pmatrix}
\cos\phi & 0 & \sin\phi \\
0 & 1 & 0 \\
-\sin\phi & 0 & \cos\phi \end{pmatrix}$

Dernière modification par Yassine (01-08-2017 15:50:52)


L'ennui dans ce monde c'est que les idiots sont sûrs d'eux et les gens sensés pleins de doutes. B. Russel

Hors ligne

#5 07-08-2017 14:42:05

Paskalo
Membre
Inscription : 05-03-2017
Messages : 11

Re : Rotations et coordonnées sur une sphère

Bonjour Yassine,

(Je suis de retour après une petite pause...)

Si, dans le principe, je crois avoir bien saisi votre explication, je dois avouer que j'ai de la peine à la mettre en pratique ! Sans doute suis-je plus rouillé que je ne le pensais. Je vais prendre une petite pause pour des vacances bien méritée, et profiter de l'occasion pour trouver un temps calme pour me pencher avec application (et acharnement) sur le sujet...

J'espère que mon prochain message sera un message de succès !

Hors ligne

#6 09-08-2017 12:31:47

Paskalo
Membre
Inscription : 05-03-2017
Messages : 11

Re : Rotations et coordonnées sur une sphère

Bon, désolé, mais ça coince...

(Pour simplifier, je travaille avec une sphère de rayon 1).

J'ai commencé par la rotation en latitude (phi donne la colatitude), selon l'axe des x (y=0).

La matrice simplifiée devient donc :
cos(phi)       sin(phi)
-sin(phi)      cos(phi)

Soit P1(x1, y1, z1) le point de départ et P2(x2, y2, z2) celui d'arrivée.

Il vient :
cos(phi) = ( x1*x2 + z1*z2 ) / ( x1*x1 + z1 * z1 )   
sin(phi) = ( cos(phi)*z1 - z2 ) / x1

En essayant quelques valeurs pour les latitudes/longitudes de départ et d'arrivées (en convertissant les coordonnées cartésiennes en polaires), je trouve des valeurs satisfaisantes pour phi. (dans la mesure où je ne peux en juger qu'au pifomètre, avec de petites variation de +/- 20° autour d'une position).

Je m'attaque à la deuxième partie :

Je fais le produit de matrices Ry * Rz.  (dans ce sens, puisque j'ai commencé par la rotation en latitude).

J'obtiens donc trois équations, où sont connus :
- x1, y1, z1, coordonnées du point de départ
- x2, y2, z2, coordonnées du point d'arrivée
- cos(phi) et sin(phi), d'après la solution de la première étape.

deux inconnues :
- cos(theta) et sin(theta), qui définissent ma rotation en longitude.

Deux inconnues, trois équations : logiquement, la solution est là.

Logiquement, oui, sauf que malgré tous mes efforts, impossible d'arriver à une solution satisfaisante...

Au final, j'ai réduit les 3 équations ainsi :

sin(théta) = ( -y1.z1.sin(phi) + x2.y1 + x1.y2.cos(phi) ) / ( x1.x1.cos(phi) - y1.y1.cos(phi) )

cos(théta) = - ( y2 - x1.sin(théta) ) / y1

Le souci, c'est qu'en réinjectant les données du point 1 dans la matrice Ry * Rz avec les valeurs des sinus et cosinus trouvés... je n'obtiens pas les coordonnées du point 2....

Quid ?

Hors ligne

#7 12-08-2017 12:27:05

Yassine
Membre
Inscription : 09-04-2013
Messages : 988

Re : Rotations et coordonnées sur une sphère

Bonjour,
Il me semble que tu as inversé les matrices. Si tu commences par la rotation $R_y$ et que tu appliques ensuite la rotation $R_z$, alors il faut considérer l'équation $X_2 = R_zR_yX_1$ et non $X_2 = R_yR_zX_1$
Tu peux exécuter le code Python (avec SymPy) suivant pour être sûr de ne pas faire d'erreur de calcul :


from sympy.matrices import *
x_1, y_1, z_1, phi, theta = symbols('x_1 y_1 z_1, \\phi, \\theta')

X_1=Matrix([x_1, y_1, z_1])

Ry = rot_axis2(phi)
Rz = rot_axis3(-theta)

Rz*Ry*X_1
 

Tu peux l'exécuter en ligne via le site suivant : http://live.sympy.org/


L'ennui dans ce monde c'est que les idiots sont sûrs d'eux et les gens sensés pleins de doutes. B. Russel

Hors ligne

#8 15-08-2017 22:22:33

Paskalo
Membre
Inscription : 05-03-2017
Messages : 11

Re : Rotations et coordonnées sur une sphère

Yassine,

Merci de ta réponse ! Si ce n'est que ça, je vais recommencer...!
Mais pas tout de suite, je ne suis pas en conditions en ce moment (soleil, piscine, tout ça, quoi...)
Je reviens dès que j'ai du neuf, merci encore !

Pascal

-------------------------

Je reviens, mais c'est pour dire que je patauge toujours... Je suis vraiment rouillé ! :(

Dernière modification par Paskalo (21-08-2017 19:24:13)

Hors ligne

#9 31-08-2017 20:58:06

Paskalo
Membre
Inscription : 05-03-2017
Messages : 11

Re : Rotations et coordonnées sur une sphère

Bonsoir Yassine (puisque tu sembles être le seul à t'intéresser à ce sujet...)

Voilà, j'ai repris un peu de temps pour me repencher sur tout ça.

Je suis arrivé aux résultats suivants :

Soit P1(x1, y1, z1) le point de départ et P2(x2, y2, z2) celui d'arrivée.

- 1ère étape, rotation en latitude, avec la matrice simplifiée :
cos(phi)       sin(phi)
-sin(phi)      cos(phi)

Il vient :
sin(phi) = (x2.z1 - x1.z2)/(x1.x1 + z1.z1)
cos(phi) = ( x2 - z1.sin(phi) )/x1

- 2ème étape, avec le produit de matrice    X2 = Rz.Ry.X1

En posant A = x1.cos(phi) + z1.sin(phi)

sin(théta) = (y2.A - x2.y1) / (y1.y1 - A.A)
cos(théta) = (x2 + y1.sin(théta) ) / A

J'ai refais plusieurs fois les calculs, je ne pense pas m'être trompé... Mais une fois que je les applique numériquement, rien ne correspond à ce à quoi je m'attends...!

A moins que mon erreur réside dans l'application informatique du résultat... Est-ce que quelqu'un pourrait vérifier mes résolutions d'équation, svp ?

Merci d'avance !

Hors ligne

#10 02-09-2017 09:33:27

Yassine
Membre
Inscription : 09-04-2013
Messages : 988

Re : Rotations et coordonnées sur une sphère

Bonjour,
Dans la solution de la première équation, je ne vois que le terme $x_1^2 + y_1^2$, alors qu'il devrait également y avoir le terme $x_2^2 + y_2^2$.
L'équation à résoudre est
$\frac{1}{x_1^2 + y_1^2}\begin{pmatrix} \cos\phi & \sin\phi \\ -\sin\phi & \cos\phi \end{pmatrix}  \begin{pmatrix} x_1 \\ z_1 \end{pmatrix} =\frac{1}{x_2^2 + y_2^2} \begin{pmatrix} x_2 \\ z_2 \end{pmatrix}$


L'ennui dans ce monde c'est que les idiots sont sûrs d'eux et les gens sensés pleins de doutes. B. Russel

Hors ligne

#11 02-09-2017 11:06:07

Yassine
Membre
Inscription : 09-04-2013
Messages : 988

Re : Rotations et coordonnées sur une sphère

Je viens de lire un peu un article sur les rotations en 3D. Et je pense que ce que je t'ai donné comme indication est erroné.
Il n'est pas possible de décomposer une rotation quelconque comme une rotation autour de $Oy$ suivie d'une rotation autour de $Oz$. Tu peux en fait décomposer une rotation $R$ comme un produit de $3$ rotations $R = R_z(\alpha)R_y(\beta)R_z(\gamma)$ (deux fois $z$) où $\alpha$, $\beta$ et $\gamma$ sont les angles d'Euler.


L'ennui dans ce monde c'est que les idiots sont sûrs d'eux et les gens sensés pleins de doutes. B. Russel

Hors ligne

#12 12-09-2017 11:43:35

Paskalo
Membre
Inscription : 05-03-2017
Messages : 11

Re : Rotations et coordonnées sur une sphère

Je reviens avec un peu de retard, mais c'est pour la bonne cause !

La solution est : il faut appliquer successivement les 3 rotations suivantes :
- M1 : rotation autour de Oz de –long_A, soit Rz(-long_A) => cette rotation amène le point A sur le "méridien 0°" ( = A' )
- M2 : rotation autour de Oy de pi/2+lat_B-lat_A, soit Ry(pi/2+lat_B-lat_A) => cette rotation amène le point A' à la latitude de B.(= A'')
- M3 : rotation autour de Oz de lon_B, soit Rz(lon_B) => cette rotation amène le point A'' à la longitude de B. ( A''' = B )

Avec l'astuce de la première rotation, on s'affranchit de tous les calculs et équations dans lesquels je me suis perdu durant des jours...!

" La simplicité est la sophistication suprême. " Léonard de Vinci

Merci à tous !

Hors ligne

Réponse rapide

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante ?78 - 25
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Pied de page des forums