Matrices de rotations intermédiaires

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 01 Déc 2013, 18:15

Alors on pourrait prendre pour M la rotation d'axe le même que Mp et d'angle \theta/10
Du coup, M^10 = Mp et chaque Mri = M^i * Ma est assurément une rotation.

uiii.

Entre temps, j'ai essayé de retrouver comment on peut calculer (de manière plus générale)
x^(1/10) avec x qui prend en variable une matrice.
Chui tombé sur ca pour l'instant j'ai encore un peu d'espoir d'y arriver, mais je sens ma motivation s'évaporer au fur et à mesure que les minutes passent mais j'y crois encore!
la vie est une fête :)



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

par leon1789 » 01 Déc 2013, 18:23

Ben314 a écrit:Mais il y a déjà (donc avant de programmer) des petits problèmes techniques : le signe de l'angle d'une rotation de R^3 ne peut se définir qu'une fois l'axe orienté.

oui, ou bien le contraire : on fixe l'angle (au signe près, comme j'ai fait au-dessus) puis on oriente l'axe de rotation. :lol3:

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

par leon1789 » 01 Déc 2013, 18:27

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)
];


sur ton exemple, avec la méthode que j'ai couchée au-dessus, je trouve


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

par Ben314 » 01 Déc 2013, 19:08

leon1789 a écrit:P = (Mp/2 + transpose(Mp)/2 - cos(t)*I ) / (1-cos(t))[/B]

T'es sûr de ton coup ?
Moi je trouve plutôt P = (Mp/2 + transpose(Mp)/2 - I ) / (1-cos(t))
Sans cos(t) devant le I.

Sinon, question à la c... : en procédant de cette manière, est ce que les axes des rotations "intermédiaires" restent dans un même plan ? Et comment évoluent les angles des rotations intermédiaires ? (i.e. est ce que le résultat qu'on obtient est le même qu'avec la première idée que vous avez eu ?)
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 » 01 Déc 2013, 19:50

Ben314 a écrit:T'es sûr de ton coup ?
Moi je trouve plutôt P = (Mp/2 + transpose(Mp)/2 - I ) / (1-cos(t))
Sans cos(t) devant le I.

oui, je suis sûr de mon coup, c'est bien cos(t) * I

Ben314 a écrit:Sinon, question à la c... : en procédant de cette manière, est ce que les axes des rotations "intermédiaires" restent dans un même plan ? Et comment évoluent les angles des rotations intermédiaires ? (i.e. est ce que le résultat qu'on obtient est le même qu'avec la première idée que vous avez eu ?)

Bonne question : effectivement, ce n'est pas la même chose. Par exemple, avec la matrice M donnée au-dessus, l'angle de la rotation M^8 * Ma n'est pas compris entre les angles de Ma et de Mb !
angle(Ma) = pi/3
angle(Mb) = pi/6
angle(M^8 * Ma) < 0.478 < angle(Mb) < angle(Ma)

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

par neoirto » 01 Déc 2013, 20:36

Et bah on est bien accueilli ici, rien à dire... A part merci à tous !

Franchement je reviendrai (d'autant que j'en ai une bonne à vous proposer juste derrière, dans la même veine et pendant que vous êtes chaud).

@Ben314
Gimbal lock : il s'agit d'une limitation propre à la représentation par les angles d'euler, lorsqu'un des plans de rotation définit par un des angles devient coplanaire à un autre des angles. Tu ne rencontres pas ce problème avec les autres formes de représentation d'une rotation (quaternion, matrices, axis angle).
Mais les angles d'euler sont bien pratiques pour bidouiller vite fait.

@leon1789
Sinon je pensai que les méthodes étaient équivalentes : les angles intermédiaires ne sont-ils pas sensés rester dans le même plan, car tournant autour de l'axe de l'"axis-angle" ?

@leon1789
Ca à l'air génial ton truc, il faut que je teste ça dans le détail... Ca a l'air de bien simplifier les calculs.

@fatal_error
Mais bon, voilà, pour l'instant je bloque à la première méthode et le code de fatal_error.
Avec ma librairie de gestion des matrices (opencv pourtant pas trop à la rue, je ne comprends pas...) impossible trouver la matrice nulle pour l'instant : :mur:

Avec vos données, j'obtiens comme fatal_error : en utilisant Mr=Mp/r;
0.866025 0.000000 -0.500000
0.000000 1.000000 0.000000
0.500000 -0.000000 0.866025

et : avec Mr=Mp^(1/r);

0.866025 0.000000 -0.500000
0.000000 1.000000 0.000000
0.500000 0.000000 0.866025

Il semble que j'ai un problème avec la puissance :
Mp
0.866025 0.433013 -0.250000
0.000000 0.500000 0.866025
0.500000 -0.750000 0.433013

Mr (avec Mr = M de leon1789)
0.000000 0.000000 -0.000000
0.100000 0.000000 0.000000
0.000000 -0.000000 0.000000

M à l'air plus que bizarre ? Vous obtenez tous le même résultat que leon1789 svp ?

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

par leon1789 » 01 Déc 2013, 20:53

neoirto a écrit:Il semble que j'ai un problème avec la puissance :
Mp
0.866025 0.433013 -0.250000
0.000000 0.500000 0.866025
0.500000 -0.750000 0.433013

ok

ensuite
t = 1.159804177


Q est toujours antisymétrique, et ses vecteurs colonnes (qui sont coplanaires) engendrent le plan orthogonal à l'axe de rotation de Mp.



On a toujours P^2 = P car c'est la matrice de projection orthogonale sur l'axe de rotation de Mp.



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

par Ben314 » 01 Déc 2013, 21:03

leon1789 a écrit:oui, je suis sûr de mon coup, c'est bien cos(t) * I

Bon, c'est que je me suis gouré, mais j'arrive pas à voir où...
Une rotation d'angle (connu via la trace) s'écrit est un élément du groupe orthogonal et avec et
Donc, la rotation de même axe orienté que mais d'angle s'écrit :
avec et .
Pour déterminer les matrices et , il suffit d'écrire que


Sauf que ça me donne . . .

Tu as fait le calcul comment toi ?

P.S. concernant le calcul des puissances de la matrice "je sais plus quoi", je sais pas si ça irait pas plus vite dé réaplique la formule ci dessus , puis , ... etc
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 » 01 Déc 2013, 21:10

Merci leon1789,
En fait je suis encore coincé à l'étape précédante. Je cherche toujours :
Mr=Mp^(1/r) avec la librairie d'Opencv

Mais bon, je ne désespère pas

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

par Ben314 » 01 Déc 2013, 21:13

neoirto a écrit:Merci leon1789,
En fait je suis encore coincé à l'étape précédante. Je cherche toujours :
Mr=Mp^(1/r) avec la librairie d'Opencv

Mais bon, je ne désespère pas
Normalement, avec la technique de léon, tu n'as aucune puissances de matrice à calculer (ni puissance entière, et encore moins de puissances 1/r !!!)
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 » 01 Déc 2013, 21:17

leon1789 a écrit:M = cos(t/10) * I + sin(t/10) * Q + (1-cos(t/10)) * P
Là aussi, ton cos(t/10) devant l'identité... m'étonne...
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 » 01 Déc 2013, 21:39

Bon, je récapitule avec les notations de Léon :
On aimerais passer "régulièrement" de à .
Pour cela, on va commencer par passer régulièrement de à et on multipliera les 10 "matrices intermédiaires" à droite par pour "retomber sur ces pattes".
L'angle de est façile à évaluer via le fait que .
Arrivé à ce point, on aimerais trouver les matrice de rotations de même axe que , mais d'angle

Pour cela on écrit que et sont des matrices indépendantes de (voir post précédent expliquant d'où sort cette formule).
On trouve et en écrivant que :


Ce qui donne et
(que l'on peut calculer avec l'ordi. vu qu'on connait tout).

Les "matrices intermédiaires" sont alors les (on peut avoir intérêt à calculer une bonne fois pour toute et en dehors de la boucle)
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 » 01 Déc 2013, 21:56

C'est bon, à force, je viens de trouver... toi tu as écrit :

avec

là où moi j'ai écrit

avec et
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 » 01 Déc 2013, 21:58

Ben314 a écrit:Bon, c'est que je me suis gouré, mais j'arrive pas à voir où...
Une rotation d'angle (connu via la trace) s'écrit est un élément du groupe orthogonal et avec et

Ton S et mon Q sont identiques, mais ton C et mon P sont liés par P = I - C
C'est pour cela que j'ai un cos(t) I pour calculer P et toi un I seulement pour calculer C.

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

par leon1789 » 01 Déc 2013, 21:59

Ben314 a écrit:C'est bon, à force, je viens de trouver...

je viens juste de répondre... mais un poil de trop tard :lol3:

Du coup, tes formules sont un poil plus simples pour aboutir à la même matrice M, non ?

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

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

Ben314 a écrit:Bon, je récapitule avec les notations de Léon :
On aimerais passer "régulièrement" de à .
Pour cela, on va commencer par passer régulièrement de à et on multipliera les 10 "matrices intermédiaires" à droite par pour "retomber sur ces pattes".
L'angle de est façile à évaluer via le fait que .
Arrivé à ce point, on aimerais trouver les matrice de rotations de même axe que , mais d'angle

Pour cela on écrit que et sont des matrices indépendantes de (voir post précédent expliquant d'où sort cette formule).
On trouve et en écrivant que :


Ce qui donne et
(que l'on peut calculer avec l'ordi. vu qu'on connait tout).

Yes, that's it !

Ben314 a écrit:Les "matrices intermédiaires" sont alors les (on peut avoir intérêt à calculer une bonne fois pour toute et en dehors de la boucle)

oui, bonne idée : du coup, à chaque itération, on n'a besoin que de calculer une petite combinaison linéaire de 3 matrices constantes.

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

par Ben314 » 01 Déc 2013, 22:18

leon1789 a écrit:Du coup, tes formules sont un poil plus simples pour aboutir à la même matrice M, non ?
Si effectivement poil il y a, il est pas épais...

EN plus, j'aimerais bien comprendre au sens géométrique à quoi ça correspond ce qu'on fait vu que ça a pas l'air d'être la même chose que de déplacer l'axe de Ma vers celui de Mb : est-ce que "graphiquement parlant" c'est plus joli ?

Sinon, y'avai peut-être une autre solution (mais plus compliqué à mettre en œuvre je pense) : toute matrice de rotation est l'exponentielle d'une matrice antisymétrique et comme l'ensemble des matrices antisymétriques est un E.V. on peut aller d'une matrice antisymétrique à une autre bêtement "en ligne droite". En plus comme la matrice antisymétrique est pas unique, une fois qu'on a "relevé" une des 2 matrice orthogonale en une matrice antisymétrique, il faut se débrouiller pour "relever" la deuxième le plus proche possible de la première...
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 » 01 Déc 2013, 22:19

Je vais reprendre les formules de Ben314 pour que la matrice P soit une matrice de projection (c'est super bien les matrices de projection), c'est-à-dire que je vais calculer l'opposée de sa matrice P (c'est à dire I - mon ancienne matrice P :dingue: ).

Ce qui donne
t = arcos( ( trace(Mp)-1 ) /2 )
angle de la rotation

P = ( Mp + transpose(Mp) - 2 I ) / 2.(cos(t) -1)
matrice de projection sur le plan orthogonal à l'axe de rotation

Q = ( Mp - transpose(Mp) ) / 2.sin(t)
matrice antisymétrique, engendrant le plan orthogonal à l'axe de rotation

Mri = Ma + ( cos(u) -1 ) * (P*Ma) + sin(u) * (Q*Ma) où u = 0, t/10, 2t/10, 3t/10... 10t/10

Mr0 = Ma et Mr10 = Mb.

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

par leon1789 » 01 Déc 2013, 22:27

Je vais reprendre les formules de Ben314 pour que
la matrice P soit une matrice de projection (c'est super bien les matrices de projection),
c'est-à-dire que je vais calculer l'opposée de sa matrice P (c'est à dire I - mon ancienne matrice P :dingue: ).

Ce qui donne

Mp = Mb * transpose(Ma)
matrice de rotation qu'il faut décomposer

t = arccos( ( trace(Mp)-1 ) /2 )
angle de la rotation Mp

P = ( Mp + transpose(Mp) - 2 I ) / 2.(cos(t) -1)
matrice symétrique de projection orthogonale sur le plan orthogonal à l'axe de rotation Mp

Q = ( Mp - transpose(Mp) ) / 2.sin(t)
matrice antisymétrique engendrant le plan orthogonal à l'axe de rotation Mp

Mri = Ma + ( cos(u) -1 ) * (P*Ma) + sin(u) * (Q*Ma) où u = 0, t/10, 2t/10, 3t/10... 10t/10
matrice de rotation

Mr0 = Ma et Mr10 = Mb.


EDIT :
Il a fallu qu'on s'y mette à trois, mais finalement, ça donne un truc super simple. Je n'y aurais pas cru au début de cette discussion ! :zen:

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

par Ben314 » 01 Déc 2013, 22:28

leon1789 a écrit:Du coup, tes formules sont un poil plus simples pour aboutir à la même matrice M, non ?
Si poil il y a... il est pas épais...


En plus, j'aimerais bien comprendre au sens géométrique à quoi ça correspond ce qu'on fait vu que ça a pas l'air d'être la même chose que de déplacer l'axe de Ma vers celui de Mb : est-ce que "graphiquement parlant" c'est plus joli ?

Sinon, y'avai peut-être une autre solution (mais plus compliqué à mettre en œuvre je pense) : toute matrice de rotation est l'exponentielle d'une matrice antisymétrique et comme l'ensemble des matrices antisymétriques est un E.V. on peut aller d'une matrice antisymétrique à une autre bêtement "en ligne droite". En plus comme la matrice antisymétrique est pas unique, une fois qu'on a "relevé" une des 2 matrice orthogonale en une matrice antisymétrique, il faut se débrouiller pour "relever" la deuxième le plus proche possible de la première ce qui doit pas être forcément simple...
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 48 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