Matrices de rotations intermédiaires

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
neoirto
Membre Naturel
Messages: 23
Enregistré le: 24 Oct 2013, 11:22

par neoirto » 05 Déc 2013, 17:42

@leon1789
Les eigenvectors d'une rotation en 3D sont exactement les vecteurs directeurs de l'axe de rotation. Est-ce bien de cela que vous voulez parler ou pas ?
Oui, voilà, ça me semble géométriquement faisable, mais encore une fois...
... Les matrices antisymétriques me passent un peu au-dessus, faut reconnaitre.

@Doraki
La notion d"angle" entre les deux matrices, sauf erreur de ma part, c'est la mesure d'écart entre les deux axes des matrices Ma et Mb, donné par :
Mp = Mb * Ma.Transpose()
angle = acos( ( Mp[0][0] + Mp[1][1] + Mp[2][2] -1.0f ) / 2.0f )
C'est bien ça ??



Avatar de l’utilisateur
leon1789
Membre Transcendant
Messages: 5486
Enregistré le: 27 Nov 2007, 15:25

par leon1789 » 05 Déc 2013, 18:19

neoirto a écrit:@leon1789
Oui, voilà, ça me semble géométriquement faisable, mais encore une fois...

justement, je pense que la méthode que l'on a explicitée fournit des rotations Mri dont les axes sont dans le plan engendré par les deux axes des deux rotations Ma et Mb. Mais vous avez dit que ce n'est pas ce qui était important pour vous. Je ne comprends pas.

neoirto
Membre Naturel
Messages: 23
Enregistré le: 24 Oct 2013, 11:22

par neoirto » 05 Déc 2013, 18:50

@leon1789
Vous voulez parler de ceci :
Ceci dis, l'axe de rotation des matrices m'importe peu, c'est bien la matrice Ma elle même qu'il me faut envoyer "en ligne droite et par le chemin le plus court" (aïe, je prends des risques là ;) vers Mb !
Ouiiii bon... J'ai probablement été un peu vite en besogne, en évacuant le concept, je reconnais bien volontiers...

Mea culpa !

Avatar de l’utilisateur
leon1789
Membre Transcendant
Messages: 5486
Enregistré le: 27 Nov 2007, 15:25

par leon1789 » 05 Déc 2013, 19:06

Ce n'est pas évident de se comprendre car nous n'avons pas le même langage.

Alors, où en sommes-nous ? Il y a-t-il quelque chose à changer dans la résolution que nous vous avons proposée ? :we:

Avatar de l’utilisateur
leon1789
Membre Transcendant
Messages: 5486
Enregistré le: 27 Nov 2007, 15:25

par leon1789 » 05 Déc 2013, 19:30

Ce n'est pas évident de se comprendre car nous n'avons pas le même langage.

Alors, où en sommes-nous ? Il y a-t-il quelque chose à changer dans la résolution que nous vous avons proposée ? :we:

neoirto
Membre Naturel
Messages: 23
Enregistré le: 24 Oct 2013, 11:22

par neoirto » 05 Déc 2013, 20:04

Ce n'est pas évident de se comprendre car nous n'avons pas le même langage.
Exact, ça ne doit pas être coton tous les jours de travailler en tant que matheux dans une équipe pluridisciplinaire, non ?

Bref je compatie, et je me relance sans perversité volontaire, dans ma prose de mathalphabète :
Donc si il existe un moyen de trouver le chemin "sphérique" le plus court possible entre Ma et Mb, et bien c'est ce que je cherche !

Bon ensuite si vous arrivez à conserver la sobriété des expressions précédentes (qui dépotent je le répète), et bien ce serait tout simplement parfait !

Merci à tous de votre aide ;)

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

par Ben314 » 05 Déc 2013, 21:45

leon1789 a écrit:Cela est tout-à-fait jouable, mais il faut trouver un moyen "efficace" d'associer (par exponentielle & logarithme) une matrice de rotation et une matrice antisymétrique.
Sur la page matrices de rotation de wiki, il y a un paragraphe "L'application exponentielle" donnant une formule de calcul de l'exponentielle d'une matrice antisymétrique (aprés, je sais pas trop pourquoi il l'ont donné en fonction des cosinus et sinus de theta/2, vu que la formule donnant le résultat en fonction de cosinus et sinus de theta n'est pas franchement plus compliquée...)

Aprés, le petit soucis de la méthode, c'est dans l'autre sens (i.e. le log.)
Au niveau calculs, c'est pas beaucoup plus long que le calcul de l'exponentielle : on a theta au signe prés gràce à la trace puis x,y et z au signe prés en regardant les termes de la diagonale et il sufit de regarder quelques termes en dehors de la diagonale pour avoir les signes.
Mais le problème, c'est qu'il y a de multiple façons de "relever" la matrice orthogonale en une antisymétriqe (le choix de \theta conaissant son cosinus).
Pour Ma, on peut prendre un log quelconque, mais ensuite, pour Mb, il doit faloir prendre le log qui est le plus proche possible (au sens ligne droite) du log de Ma choisi si on veut que ça fasse pas des trucs bizares...
Qui n'entend qu'un son n'entend qu'une sonnerie. Signé : Sonfucius

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

par Ben314 » 05 Déc 2013, 21:52

neoirto a écrit:Ceci dis, l'axe de rotation des matrices m'importe peu, c'est bien la matrice Ma elle même qu'il me faut envoyer "en ligne droite et par le chemin le plus court" (aïe, je prends des risques là ;) vers Mb !
A part que le termes qu'utilisent les matheux dans ce cas là n'est pas celui de "ligne droite", mais le terme plus compliqué de "géodésique" (= chemin le plus court en restant dans un ensemble fixé d'avance qui n'est à priori pas "plat") ça a parfaitement du "sens" de chercher le chemin le plus court entre deux rotations en restant dans SO(R^3).
C'est même un problème extrêment "concret" dans le sens que, pour aller de Paris à Pekin, la vrai "ligne droite" au sens mathématique du terme, ben c'est pas demain la veille qu'on passera par là pour aller à Pekin, donc on cherche le trajet le plus court... en restant à la surface de la terre... (et ce n'est pas totalement trivial de voir lequel c'est)
Qui n'entend qu'un son n'entend qu'une sonnerie. Signé : Sonfucius

Avatar de l’utilisateur
leon1789
Membre Transcendant
Messages: 5486
Enregistré le: 27 Nov 2007, 15:25

par leon1789 » 05 Déc 2013, 22:41

Personnellement, le seul défaut que je constate dans la méthode présentée au-dessus, c'est que les angles des rotations intermédiaires ne sont pas en "ligne droite" entre les angles des rotations Ma et Mb.

En revanche, le cheminement des axes des rotations intermédiaires me paraissent bien. Mais cela ne signifie pas qu'il n'y a pas d'intérêt à faire autrement.

Je vais y réfléchir aux angles...


@Ben314
je suis bien d'accord. Imaginons qu'on ait réalisé un bon log de les deux matrices de rotation Ma et Mb vers matrices antisymétriques Aa Ab : comment l'exponentielle va torturer la ligne droite entre les deux matrices antisymétriques ? Le résultat (l'exponentielle d'une ligne droite de matrices antisymétriques) aura-t-il une belle tête ou bien pourrait-t-il être passablement tordu ? Le chemin sera-t-il "homogène" ou sera-t-il "accéléré" d'un coté ? Je n'arrive pas bien à dire ce que j'imagine vaguement, vois tu ce que je veux dire ?

neoirto
Membre Naturel
Messages: 23
Enregistré le: 24 Oct 2013, 11:22

par neoirto » 05 Déc 2013, 23:31

Je suis content que ce problème vous interpelle à ce point...

Et puis par exemple, je serai ravi de briller demain en société en expliquant avoir résolu le problème grâce au théorème de la boule chevelue ! Et d'habiles mathématiciens, celà va de soit.

Mais sinon, à y regarder de plus près, je suis d'accord avec leon1789 : on n'est plus très loin de la solution à ce stade.
Il existe peut être une astuce (mathématiquement pas très propre) qui permettrait d'ajuster un paramètre (mais lequel ?), en minimisant la longueur du géodésique par exemple pour diriger une convergence ???
Peut être une transformation paramétrique de Mp ? Si il existe une infinité de géodésique, sur quel paramètre agir pour générer un nouveau géodésique juste ?

Bon enfin, moi je dis ça... Je sens que je vai avoir tout faux.

Quoiqu'il en soit, je m'occuperai des représentations 3D si ça peut vous aider.

Je résumerai en disant que les matheux sont sympas :we:

Avatar de l’utilisateur
leon1789
Membre Transcendant
Messages: 5486
Enregistré le: 27 Nov 2007, 15:25

par leon1789 » 05 Déc 2013, 23:38

Ha ! une autre solution qui, je pense, va tenir la route ! Il est tard, je ne vais pas expliquer ,

mais voici le résultat sur votre exemple avec a=b=Pi/2 ,
neoirto a écrit:
Code: Tout sélectionner
float     a = PI/2; /// PI/3
Ogre::Matrix3   Ma = Matrix3 (
Real(1.0f), Real (0.0f), Real (0.0f),
Real(0.0f), Real (cosf(a)), Real (-sinf(a)),
Real(0.0f), Real (sinf(a)), Real (cosf(a))
);
                           
float   b = PI/2; /// PI/6
Ogre::Matrix3 Mb = Matrix3 (
Real(cosf(b)), Real (0.0f), Real (-sinf(b)),
Real(0.0f), Real (1.0f), Real (0.0f),
Real(sinf(b)), Real (0.0f), Real (cosf(b))
);


j'obtiens simplement



On fait varier u entre 0 et 1 :
M(0) = Ma
M(1) = Mb

L'angle de M(u) est constant à Pi/2.
Et l'axe de rotation de M(u) varie dans le plan engendré par les axes de M(0) et M(1) en géodésique sphérique.


Sur l'exemple de fatal_error,

fatal_error a écrit:
Code: Tout sélectionner
%http://www.maths-forum.com/showthread.php?p=983361#post983361
a=pi/3;
Ma=[
1 0 0
0 cos(a) -sin(a)
0 sin(a) cos(a)
];
b=pi/6;
Mb=[
cos(b) 0 -sin(b)
0 1 0
sin(b) 0 cos(b)
];



j'obtiens



On fait varier u entre 0 et 1 :
M(0) = Ma
M(1) = Mb

L'angle de M(u) varie en ligne droite entre l'angle de M(0) et celui de M(1).
Et l'axe de rotation de M(u) varie dans le plan engendré par les axes de M(0) et de M(1), en géodésique sphérique.

Pour u=0.5, on a




Avant d'aller plus loin dans l'explication, est-ce que la tête de la solution au niveau graphique vous convient ?

Doraki
Habitué(e)
Messages: 5021
Enregistré le: 20 Aoû 2008, 11:07

par Doraki » 05 Déc 2013, 23:45

Ben314 a écrit:Mais le problème, c'est qu'il y a de multiple façons de "relever" la matrice orthogonale en une antisymétriqe (le choix de \theta conaissant son cosinus).
Pour Ma, on peut prendre un log quelconque, mais ensuite, pour Mb, il doit faloir prendre le log qui est le plus proche possible (au sens ligne droite) du log de Ma choisi si on veut que ça fasse pas des trucs bizares...

Il me semble que ça donne le même résultat que le truc proposé juste avant par leon ou fatal_error, sauf que tu risques de faire des tours complets en plus ou de tourner dans le mauvais sens pour arriver à Mb si tu prends le mauvais log.

A ce que je sache, il y a 1 seule manière (modulo les tours en plus) de passer de Ma à Mb de sorte que
- le chemin soit indépendant du repère initial (donc le 1er truc à faire est de calculer MbMa-1)
- ça ressemble à un mouvement homogène : pour aller de M(t) à M(t+dt) on applique une rotation R(dt) qui ne dépend pas de t. Du coup, R(t) = exponentielle de t*une matrice (qui est dans l'algèbre de Lie de SO(3)), et R(1) = Mb Ma-1
Du coup c'est une solution très naturelle.

Personnellement, le seul défaut que je constate dans la méthode présentée au-dessus, c'est que les angles des rotations intermédiaires ne sont pas en "ligne droite" entre les angles des rotations Ma et Mb.

Je suis aussi sceptique sur le fait que les axes des rotations intermédiaires (M(t) = R(t)Ma) sont dans le plan défini par les axes de Ma et Mb.

Mais c'est pas vraiment un truc utile. Déjà, ça dépend du repère initial.
Par exemple si Ma et Mb représentent l'orientation d'un avion ou du bras d'un robot, considérer Ma et Mb comme des rotations qu'on pourrait itérer n'est vraiment pas pertinent. Ce sont des rotations qui expriment le repère de l'avion / du robot en fonction du repère de base ; ça n'a aucun sens de les appliquer 2 fois de suite. Les vecteurs propres / valeurs propres (donc l'axe de rotation et l'angle) prennent leur importance dans un contexte où on peut itérer la rotation, ce qui n'est pas forcément le cas.

(enfin bon je sais pas ce que neoirto veut faire avec Ma et Mb)

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

par Ben314 » 06 Déc 2013, 00:52

Doraki a écrit:A ce que je sache, il y a 1 seule manière (modulo les tours en plus) de passer de Ma à Mb de sorte que
- le chemin soit indépendant du repère initial (donc le 1er truc à faire est de calculer MbMa-1)
- ça ressemble à un mouvement homogène : pour aller de M(t) à M(t+dt) on applique une rotation R(dt) qui ne dépend pas de t. Du coup, R(t) = exponentielle de t*une matrice (qui est dans l'algèbre de Lie de SO(3)), et R(1) = Mb Ma-1
Du coup c'est une solution très naturelle.
Justement, c'est là qu'il faudrait que je (re)regarde comment fonctionne le revêtement par l'algèbre de Lie, mais il me semble bien que la multiplication (à droite par exemple) dans SO(3) n'est pas une isométrie, donc de chercher la géodésique de Id à MbMa-1 puis de regarder l'image de cette géodésique par la multiplication à droite par Ma (c'est ce qu'on a fait pour le moment), ce n'est pas la même chose que de chercher la géodésique de Ma à Mb (ce qui, sauf erreur, vient du fait que Exp(x+y) n'est plus égal à exp(x)*exp(y) si x et y ne commutent pas)

Pour reprendre tes notations, Pour aller de Id à MbMa-1, on va utiliser R(t)=exp(t.A) où A est antisymétrique, donc pour aller de Ma à Mb, on va utiliser S(t)=exp(t.A).Ma.
Si on écrit Ma=exp(A') avec A' une autre matrice antisymétrique, ça donne S(t)=exp(t.A).exp(A'), mais, si A et A' ne commutent pas, ça ne sera pas de la forme ext(t.A+A') alors que ça serait de cette forme en "relevant" Ma en A' et en "relevant" Mb en A+A' (si t varie de 0 à 1)

Après, au niveau "purement visuel", je sais pas si une des deux solutions est "mieux" que l'autre, et comme je ne sais pas non plus ce que neoirto veut faire avec Ma et Mb...

P.S. T'aurais pas une idée de génie concernant le post sur les s.e.v. de Mn(k) ne contenant que des non inversible ?
Qui n'entend qu'un son n'entend qu'une sonnerie. Signé : Sonfucius

Doraki
Habitué(e)
Messages: 5021
Enregistré le: 20 Aoû 2008, 11:07

par Doraki » 06 Déc 2013, 02:37

Ben314 a écrit:Justement, c'est là qu'il faudrait que je (re)regarde comment fonctionne le revêtement par l'algèbre de Lie, mais il me semble bien que la multiplication (à droite par exemple) dans SO(3) n'est pas une isométrie, donc de chercher la géodésique de Id à MbMa-1 puis de regarder l'image de cette géodésique par la multiplication à droite par Ma (c'est ce qu'on a fait pour le moment), ce n'est pas la même chose que de chercher la géodésique de Ma à Mb (ce qui, sauf erreur, vient du fait que Exp(x+y) n'est plus égal à exp(x)*exp(y) si x et y ne commutent pas)

je suis ptetre fatigué, mais je doute fortement de ton groupe qui n'agit pas par isométrie sur lui-même.
Comme j'ai pas de définition de distance naturelle sur SO(3) qui me vient immédiatement à l'esprit, je peux pas en dire plus.
Pour reprendre tes notations, Pour aller de Id à MbMa-1, on va utiliser R(t)=exp(t.A) où A est antisymétrique, donc pour aller de Ma à Mb, on va utiliser S(t)=exp(t.A).Ma.
Si on écrit Ma=exp(A') avec A' une autre matrice antisymétrique, ça donne S(t)=exp(t.A).exp(A'), mais, si A et A' ne commutent pas, ça ne sera pas de la forme ext(t.A+A') alors que ça serait de cette forme en "relevant" Ma en A' et en "relevant" Mb en A+A' (si t varie de 0 à 1)

A partir du moment où tu prends le log de Ma, tu jettes aux orties mon critère de naturalité "ne dépend pas du repère initial" (ce qui rejoint ma remarque que Ma lui même n'est pas de type T -> T, mais Ma et Mb sont de type T -> U, donc leur log n'a aucun sens, mais Mb Ma-1 lui est de type U -> U, et là le log a un sens ; si on a pas de bonne raison de supposer Ma de type T -> T, ben je le suppose pas), donc je prédis que tu vas avoir des trucs moches.
(de même les axes et les angles de M(t) dépendent du repère initial donc ne sont pas un truc naturel à considérer a priori)
oui je déteste les trucs qui dépendent du repère initial.

P.S. T'aurais pas une idée de génie concernant le post sur les s.e.v. de Mn(k) ne contenant que des non inversible ?

A part espérer que (X est de dimension n²-n, ne contient pas de matrice inversible, et il n'y a pas de vecteur x tel que Ax = 0 pour tout A de X) implique dim (Im X) = n-1, je vois pas trop.
J'ai aussi la vague impression d'avoir déjà vu le problème quelquepart.

Doraki
Habitué(e)
Messages: 5021
Enregistré le: 20 Aoû 2008, 11:07

par Doraki » 06 Déc 2013, 04:10

Ah si j'ai compris où tu veux en venir.

Si effectivement on s'intéresse à Ma et Mb comme des rotations et non comme des vulgaires changement de repère, un changement du repère initial se traduit en conjugaison.


donc on cherche un changement de repère T qui change l'axe de Ma en l'axe de Mb, puis (comme malheureusement la classe de conjugaison d'une rotation est déterminée par son angle), il faut en même temps faire changer cet angle, donc on obtient un truc comme M(t) = exp(-t log T)exp(1+t*((angle de Mb / angle de Ma)-1) * log Ma)*exp(t log T).

(et le processus final devrait commuter avec la conjugaison donc est indépendant du repère initial)

Donc oui là on a 2 occusions de faire des tours en trop, non seulement on peut faire tourner l'axe plus qu'il ne le faut, mais l'angle de la rotation peut lui aussi faire des tours supplémentaires.


En fait en y repensant c'est ptetre plus ça qu'il avait l'air de chercher.

Avatar de l’utilisateur
leon1789
Membre Transcendant
Messages: 5486
Enregistré le: 27 Nov 2007, 15:25

par leon1789 » 06 Déc 2013, 07:11

En passant par log et exp, n'arrive-t-on pas à des matrices intermédiaires de la forme
avec , , ?

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

par Ben314 » 06 Déc 2013, 08:10

Doraki a écrit:En fait en y repensant c'est ptetre plus ça qu'il avait l'air de chercher.
Dans l'autre sens je me demande si c'est pas toi qui a raison : moi on m'a dit "passer d'une rotation à une autre" donc.. j'essaye, mais effectivement, s'il ne s'agit pas de rotation mais juste de changement de repères, c'est pas la même chose... (chose que je n'avais pas envisagé et qui fait que je ne comprenais pas ton "à changement de repère prés")
Qui n'entend qu'un son n'entend qu'une sonnerie. Signé : Sonfucius

neoirto
Membre Naturel
Messages: 23
Enregistré le: 24 Oct 2013, 11:22

par neoirto » 06 Déc 2013, 12:07

Bonjour à tous,

@leon1789
Je ne suis pas sur d'avoir saisi comment tracer votre nouvel exemple : voila en vert le nouveau tracé pour mon exemple à a=b=PI/2 (ici j'ai juste tracé M(u) avec u entre 0 et 1) :
Image
En rouge, l'ancien mode de calcul (extraction d'axis angle de Mp, décomposition de l'angle, et reconstruction de Mpi).

Et sur le second exemple a=PI/3 et b=PI/6 :
Image
Il y a probablement quelque chose que je fais de travers, mais j'ai bien vérifié votre résultat pour u=0.5.

@Doraki et Ben314:
Je m'intéresse bien à Ma et Mb comme à des matrices de rotations, et non strictement comme à des changement de repère. Je cherche à interpoler linéairement entre 2 matrices. Donc effectivement si les matrices intermédiaires conduisent à des rotations supplémentaires, c'est un problème.

J'espère répondre à votre question !

Doraki
Habitué(e)
Messages: 5021
Enregistré le: 20 Aoû 2008, 11:07

par Doraki » 06 Déc 2013, 12:43

neoirto a écrit:Je m'intéresse bien à Ma et Mb comme à des matrices de rotations, et non strictement comme à des changement de repère.

ok donc il te faudrait mon truc en exp(-t log T) exp((1-t + t*(angle de Mb/angle de Ma)) * log Ma) * exp(t log T)

où T est une rotation qui envoie l'axe de Mb sur l'axe de Ma.

L'ennui c'est qu'on a a priori plusieurs choix pour T. L'axe de rotation de T peut être n'importe quel axe dans le plan qui bissecte les axes de Ma et Mb.
Parmi les choix naturels de T, celui qui donne le "chemin le plus court" est de prendre l'axe de T = l'axe orthogonal aux axes de Ma et de Mb ; c'est lui qui va donner un angle de T le plus petit (qui sera d'ailleurs l'angle entre les deux axes).

Donc on trouve l'axe Da et un angle Aa de Ma ; l'axe Db et un angle Ab de Mb ; on prend l'axe de T = Dt qui est orthogonal à Da et Db ; l'angle de T est l'angle At entre Db et Da ;
et finalement M(t) = (rotation d'axe Dt et d'angle t*At) (rotation d'axe Da et d'angle Aa*(1-t)+Ab*t) (rotation d'axe Dt et d'angle -t*At)

et tu t'arranges pour pas prendre des angles idiots comme Aa = 10pi+pi/3 quand tu peux prendre Aa = pi/3 à la place.

neoirto
Membre Naturel
Messages: 23
Enregistré le: 24 Oct 2013, 11:22

par neoirto » 06 Déc 2013, 13:03

Parmi les choix naturels de T, celui qui donne le "chemin le plus court" est de prendre l'axe de T = l'axe orthogonal aux axes de Ma et de Mb ; c'est lui qui va donner un angle de T le plus petit (qui sera d'ailleurs l'angle entre les deux axes).
C'est bien le type de résultat final que je recherche !

L'ennui, c'est qu'avec vos formules, je ne vois pas comment trouver une expression de T...

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 33 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