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).

Répondre

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 cette opération? 3+7=

Retour

Résumé de la discussion (messages les plus récents en premier)

Paskalo
12-09-2017 12:43:35

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 !

Yassine
02-09-2017 12:06:07

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.

Yassine
02-09-2017 10:33:27

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}$

Paskalo
31-08-2017 21:58:06

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 !

Paskalo
15-08-2017 23:22:33

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é ! :(

Yassine
12-08-2017 13:27:05

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/

Paskalo
09-08-2017 13:31:47

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 ?

Paskalo
07-08-2017 15:42:05

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 !

Yassine
01-08-2017 16:46:13

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}$

Paskalo
01-08-2017 16:25:57

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 !

Yassine
01-08-2017 15:40:11

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é.

Paskalo
31-07-2017 12:02:47

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...

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

Pied de page des forums