Kommunauty
Connexion
Inscription

Blocage de cardan, exemple numérique.


Ideophage Messages : 115

Bonjour,

En voulant aider Dawlin dans le sujet Les matrices de rotation, j'ai rencontré un problème pour comprendre ce qu'est précisément le blocage de cardan. D'après ce que j'ai compris, si on fait tourner un point de 90° autour de z, l'axe x se confond avec l'axe y... Gné ? Comment ? L'axe tourne lui aussi ? Bon, ok, et du coup, on perd une liberté. Ça ok, mais pour le coup de l'axe qui tourne... On modifie simplement la position des points, non ? C'est quoi cette histoire d'axe qui tourne ? Ou je suis complètement à côté de la plaque (ça doit être ça) ?

Bon, j'essaye de faire un exemple numérique, voici ce que ça me donne :


Soit le point (1;0;0).
Je veux lui appliquer deux rotations : 90° axe z et 90° axe x (censé foirer).

Donc, j'ai la matrice suivante pour la première rotation autour de z :
(0 -1 0)
(1  0 0)
(0  0 1)

La matrice suivante pour la rotation autour de x, qui est censé avoir bougé (par quel obscur mécanisme ??) :
(1 0  0)
(0 0 -1)
(0 1  0)

On multiplie les deux, ça donne :
(0 -1  0)
(0  0 -1)
(1  0  0)

Ensuite, on multiplie avec notre point, et ce qui en résulte :
(0)
(0)
(1)

...

Je ne vois pas trop où est le problème...

J'avais trouvé sur Wikipédia un exemple de blocage de cadran, mais pas compris... évidemment que alpha et gamma aient la même influence, les deux matrices qu'ils définissent sont identiques (sauf alpha <-> gamma)... encore et encore... c'est à se frapper la tête contre les murs...

J'attends une réponse désespérément et avec impatience.

lundi 3 septembre 2012 (Dernière édition mardi 4 septembre 2012)

Dawlin Messages : 3381

Peut-être que ça marche avec 90 degrés, mais il faudrait prouver ça pour n'importe quel alpha.

Essaie avec Pi/3 pour voir

EDIT : Cet article est bizarre, dans ces trois matrices au début, là, il y en a deux de rotation suivant "z" (enfin je le définit arbitrairement comme tel) et aucune sur y... C'est normal ou pas ?

EDIT 2 : Dans ton exemple, ta matrice de rotation en z est me semble-t-il fausse, où est passé la composante 1 selon z ?

lundi 3 septembre 2012 (Dernière édition lundi 3 septembre 2012)

Ideophage Messages : 115

Tout d'abord, merci de ta réponse. Ce problème m'énerve vraiment.

Bon, je ne vois pas trop pourquoi ça ne fonctionnerait pas avec pi/3... D'après ce que j'ai compris, c'est un problème dû au fait que les axes tournent... mais pourquoi tournent-ils, ces axes ?! S'ils "tournent", alors ça ne devrait pas marcher avec 90. Bref, j'ai essayé avec pi/3, ça fonctionne. Je ne poste pas, parce que c'est un peut chiant les pi, toussa. Et pas envie de faire ça avec LaTeX, ni d'apprendre à me servir de Mappel ou autre.

Cet article est bizarre, dans ces trois matrices au début, là, il y en a deux de rotation suivant "z" (enfin je le définit arbitrairement comme tel) et aucune sur y... C'est normal ou pas ?

Oui, c'est bien ça le problème. Quand j'ai commencé à lire, je me suis dit : "Super ! Enfin un exemple numérique, je vais comprendre !". Et là, paf, ils me sortent une évidence en disant que c'est le problème : ils disent que les deux matrices qui font tourner autour de z ont le même effet si on n'a rien fait entre leurs deux applications... encore heureux !

Dans ton exemple, ta matrice de rotation en z est me semble-t-il fausse, où est passé la composante 1 selon z ?

Hum... Je vais voir ça... Ah oui, j'ai juste mis un 0 en recopiant de mon papier, merci. J'édite.

edit : C'est cool ! Je suis allé voir dans l'article anglais, arabe, et autres... ils font tous la même chose. Y'en a même un qui a mis trois fois alpha, à la place de mettre alpha, bêta, gamma.

mardi 4 septembre 2012 (Dernière édition mardi 4 septembre 2012)

Dawlin Messages : 3381

Bon, à mon avis les axes bougent parce que tu ne fais pas une rotation de l'objet mais du repère tout entier. Parce que dans ce cas là oui, ça bouge ferme...

mardi 4 septembre 2012

Ideophage Messages : 115

Comment ça une rotation sur le repère ? Je suis de plus en plus paumé, là. Tout ce qu'on fait, c'est calculer les nouvelles coordonnées du point, selon moi.

J'ai trouvé dans des forums des trucs du genre : c'est à cause de l'ordre des rotations. Et un truc pour simuler un gimbal lock : un cube que l'utilisateur peut le faire tourner à 90°. Les rotations x, y et z sont appliquées séparément, toujours dans le même ordre. Dans ce cas, oui, ça va poser problème, mais PEBKAC. Ce qu'il faudrait faire, c'est attribuer à l'objet une matrice (unique) qui stockerait les transformations, ou bien vraiment transformer les coordonnées des points. Et pour les erreurs d'arrondi... ben ça aussi, c'est un problème lié à l'implémentation, pas aux maths sous-adjacentes... Donc franchement je vois pas (désolé si je suis chi*nt).

mardi 4 septembre 2012

Dawlin Messages : 3381

Peut-être qu'il est impossible d'attribuer une matrice à l'objet lui-même. On n'est pas forcément dans un cas de POO, non ?

Mais le blocage de Cardan intervient d'après ton lien quand on utilise les angles d'Euler. Juste en dessous on te propose les quaternions mais également les matrices de rotation comme alternative... es-tu sûr que tu parles du problème qui génère l'incompatibilité ou est-ce que tu exposes un théorême qui fonctionne ?

Et puis au pire, la rentrée c'est dans quelques jours, tu appostrophe un prof de maths qui sera bien plus à même de te renseigner.

mardi 4 septembre 2012

Ideophage Messages : 115

Peut-être qu'il est impossible d'attribuer une matrice à l'objet lui-même. On n'est pas forcément dans un cas de POO, non ?

Oui, mais dans ce cas, comment est-ce que les rotations sont-elles gérées ? Je vois deux possibilités :

  • C'est la forme de l'objet qui est modifiée (position des points), dans ce cas pas de problème.
  • Les rotations x, y et z sont stockées et appliquées à l'objet toujours dans le même ordre (hum... je me demande qui ferait ça, c'est évident que c'est foireux, cette méthode). Dans ce cas, on a bien des matrices (ou des angles) associées à l'objet, donc pas de problème.

Mais le blocage de Cardan intervient d'après ton lien quand on utilise les angles d'Euler. Juste en dessous on te propose les quaternions mais également les matrices de rotation comme alternative... es-tu sûr que tu parles du problème qui génère l'incompatibilité ou est-ce que tu exposes un théorême qui fonctionne ?

Peut-être que, effectivement, j'expose un truc qui fonctionne, mais dans ce cas, j'aimerais voir un truc qui ne fonctionne pas, pour voir ce qu'est ce foutu fameux blocage de cardan.

Et puis au pire, la rentrée c'est dans quelques jours, tu appostrophe un prof de maths qui sera bien plus à même de te renseigner.

Oui, c'est demain pour moi.

J'y ai pensé, oui, mais je ne dois pas être très habile pour parler aux profs, selon mon expérience de l'année dernière. À chaque fois que j'essayais de dialoguer avec un prof, je n'y arrivais pas (si quelqu'un veut des exemple, je lui donne la liste avec plaisir (désolé, encore un peu haineux)). J'en ai donc conclu qu'essayer de dialoguer avec les profs était peine perdue en ce qui me concerne. Je ne dis pas que je n'étais pas en tort, un peu quand même parfois (pas sur le fond mais sur la forme* oui), mais je préfère me taire au début.

* : (Werber) pensée en boite de conserve : (Hugo) La forme est le fond rendu visible

mardi 4 septembre 2012

Ideophage Messages : 115

Je pense que le problème est en fait le PEBKAC auquel j'avais pensé : les rotations x, y et z sont mémorisées, puis appliquées à chaque point du mesh à chaque affichage (enfin, pas forcément à chacun) dans le même ordre (x, y puis z, par exemple). Ainsi, si on effectue une rotation à 90° autour de l'axe y, l'axe z se retrouve à avoir le même effet que l'axe x, c'est bien ça.

Je comprend maintenant ce que sont les angles d'Euler. Je croyais auparavant que c'était une succession de rotations autour de x, y et z, mais en fait non, c'est juste trois nombres décrivant les rotations autour de x, autour de y puis autour de z. Au début, je croyais que le problème était lié aux matrices, mais il suffisait de mieux regarder les angles d'Euler...

Tout s'éclaire tout à coup ! Bon, bon, ça m'a fait peur au début, je croyais que le problème était dû à l'utilisation des matrices de rotation, donc forcément que je ne comprenais pas.

Merci à ceux qui ont réfléchi au problème.

mercredi 5 septembre 2012

Dawlin Messages : 3381

Bon ba c'est chouette que tu aies trouvé en tout cas. N'hésite pas à nous revoir si tu as un autres problème du genre. On trouve pas forcément la solution mais on aime bien se creuser les méninges

mercredi 5 septembre 2012

Ideophage Messages : 115

Non non, j'hésite pas. Et puis, poser mon problème, le décrire, ça me permet de clarifier le tout.

mercredi 5 septembre 2012

Répondre Pour répondre, tu dois d'abord t'inscrire rapidement sur Kommunauty. Rejoins-nous vite !