Transformation en 2D ou en 3D

Discussion générale entre passionnés et amateurs de mathématiques sur des sujets mathématiques variés
Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 13:39

Transformation en 2D ou en 3D

par Dlzlogic » 05 Déc 2013, 16:46

Bonjour,
J'ouvre une nouvelle discussion pour éviter d'en perturber une actuelle.
La question posée est la suivante : on a un objet A et on veut le transformer en un objet B.
Cette question peut se poser inversement : on a un objet A et un objet B, comment trouver les paramètres de transformation pour passer de A vers B ?
Le contexte est un contexte réel, c'est à dire que les valeurs numériques des coordonnées sont des valeurs réelles. Les outils de calcul sont les outils habituels : 4 opérations, valeurs trigonométriques etc. Les moyens de calcul sont généralement l'informatique.
Il résulte de cela que les valeurs résultant de calculs ne sont jamais des valeurs exactes.
Pour simplifier l'explication, je ferai le raisonnement en 2D. Le raisonnement est identique en 3D.

En mathématique toute similitude peut se calculer par une homothétie+rotation. C'est à dire qu'il existe une transformation T (homothétie+rotation) qui fait correspondre deux figures semblables.
Dans la pratique, il sera intéressant de rajouter une translation, le choix du vecteur de translation est sans importance, donc, il existe une infinité de transformation (T+H+R) pour faire correspondre deux figures semblables.
Etape suivantes : On rajoute une affinité. Géométriquement, cela revient à avoir le rapport des unités différent en X et en Y.
Lorsqu'il s'agissait d'une similitude, les figures A et B étaient constituées de 2 points, ou pouvaient s'y ramener.
En résumé
1- cas d'une rotation centrée en O et d'angle A
X = x . cosA - y . sinA
Y = x . sinA + y . cosA
2- cas d'une homothétie+rotation centrée en O, d'angle A de rapport L
X = L . (x . cosA - y . sinA)
Y = L . (x . sinA + y . cosA)
soit CA = L . cosA et SA = L . sinA et DX, DY une translation quelconque. Alors la formule s'écrit
X = DX + CA . x - SA . y
Y = DY + SA . x + CA . y
3- cas général, on a aussi une affinité, alors
X = DX + XX . x + XY . y
Y = DY + YX . x + YY . y
On imagine aisément que deux points pour déterminer la figure ne suffisent pas dans le cas d'une transformation affine, c'est à dire dans le cas où le rapport des vecteurs unitaires en X/Y n'est pas le même.
Pour une rotation, le déterminant ( = cos²A + sin²A) doit obligatoirement être égal à 1. En calcul avec des valeurs réelles, et en particuliers avec un calcul informatique, ce ne sera généralement pas vrai. Il en résulte qu'il s'agira toujours d'une transformation affine, même si les coefficients correspondants sont très voisins.
En conclusion, la transformation dans le plan, dans le cas général, est la transformation affine. Il y a lieu de rappeler que cette transformation ne conserve pas les angles.
Il y a lieu de préciser aussi que les valeurs obtenues pour les paramètres seront très proches des valeurs que l'on aurait obtenu sans affinité.

Application : On a une figure F1 que l'on veut transformer par rotation en une figure F2, en passant successivement par les positions f1, f2, ..., f10.
On connait le centre de rotation O et l'angle A.
Solution : on considère 3 points non alignés A1, B1, C1 de la figure F1. On peut calculer les point homologues A2, B2, C2 de la figure F2.
On écrit le système de 6 équations tq: XA2 = TX + XX.XA1 + XY.YA1 et YA2 = TY + YX.XA1 + YY.YA1 pour chacun des 3 points.
On obtient ainsi la formule de transformation de F1 vers F2. (paramètres DX, DY, XX, XY, YX, YY)
Pour les 10 figures intermédiaires, on procède de la même façon : on calcule les coordonnées a2, b2, c2, puis les paramètres de la transformation.

Dans le cas présent, on a divisé la rotation d'angle A en 10 parties égales, mais on peut préférer un autre choix, les trois points de la figure d'arrivée seront calculés avec la loi choisie.

L'application à la transformation à 3 dimensions se déduira de cela sans difficulté. En 2D, étant donné qu'il y a peu d'opérations arithmétiques, les écarts seront minimes si on n'utilise pas l'affinité. Il n'en est pas de même en 3D où le nombre d'opérations est plus important. Avec la méthode directe, 4 points permettent de calculer les 12 paramètres, il n'y a plus d'imprécision qui se cumule.



Sylviel
Modérateur
Messages: 6466
Enregistré le: 20 Jan 2010, 13:00

par Sylviel » 05 Déc 2013, 17:03

Oui pour tes deux premiers paragraphes (si ce n'est que construire l'image par une transformation ou identifier la transformation ce n'est pas tout à fait la même chose). Ce qui est dis dedans me paraît vrai (mais pourrait être beaucoup plus concis avec les outils "moderne" - la notation actuelle des matrices dates du début du XXème siècle...).

En revanche la fin est pour le moins déroutante. Tu dis :
je prends 3 points de ma figure initiale, je sais en déterminer leur image (comment ?), donc je peux en déduire les paramètres de la rotation.

Puis tu dis

Pour les 10 figures intermédiaires, on procède de la même façon : on calcule les coordonnées a2, b2, c2, puis les paramètres de la transformation.


Et comment obtiens-t-on ces "figures intermédiaires" ?

Dans le plan on imagine aisément pouvoir faire "à la main" le calcul pour une rotation d'angle 1/10ème de celui voulut (remarquons que cela revient à déterminer directement tes coeff XX etc qui sont les coeff de la matrice de rotation) et toute la question de la discussion initiale (http://www.maths-forum.com/matrices-rotations-intermediaires-148165.php) c'est bien de savoir comment construire des "figures intermédiaires" qui soit sur un chemin "logique".
Merci de répondre aux questions posées, ce sont des indications pour vous aider à résoudre vos exercices.

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 13:39

par Dlzlogic » 05 Déc 2013, 17:34

Donc, j'ai pas été assez détaillé, je complète.
Soit 2 figures F1 et F2, pour ne pas me répéter, ces figures sont ramenées à 3 points, c'est un triangle A1B1C1 et un triangle A2B2C2.
Soit les 2 triangles sont connus, et on cherche la formule de transformation à appliquer à tous les points de F1 pour pouvoir calculer tous les points homologues de F2.
Soit l'opération inverse, on connait la figure F1 et les éléments de transformation (similitude en général, rotation dans le cas présent). Alors on les calcule avec ces paramètres et par la méthode qu'on veut, et on est ramené au cas précédent.
Dans le cas de la discussion initiale, apparemment on connait la rotation de F1 vers F2 (centre 0 angle A) On peut donc calculer les paramètres nécessaire pour ensuite calculer tous les points de la figure F2, là où on veut arriver.

On veut passer par les 10 positions successives. Chacune, puisque c'est la loi désirée, résulte d'une rotation de centre O et d'angle A/10, 2A/10, 3A/10...
En d'autres termes, pour chaque figure intermédiaire, il y a une rotation à partir de F1, ou même de la figure précédente d'un angle A/10.
On a choisi de suivre le trajet centré sur O, de rayon constant et d'angle multiple de A/10.
On pourrait très bien choisir une toute autre loi, tant que pour 10 itérations on arrive à F2 exactement. On pourrait faire "grossir" la figure, ou je ne sais quoi d'autre.
Ce qui est important, et je crois qu'on peut pas faire autrement, est de partir de 3 points homologues (4 points en 3D) et de résoudre le système linéaire de 6 équations (12 équations en 3D).

Sylviel
Modérateur
Messages: 6466
Enregistré le: 20 Jan 2010, 13:00

par Sylviel » 05 Déc 2013, 17:41

Ce qui est important, et je crois qu'on peut pas faire autrement, est de partir de 3 points homologues (4 points en 3D) et de résoudre le système linéaire de 6 équations (12 équations en 3D).


Tout porte bien sur le verbe croire.
Merci de répondre aux questions posées, ce sont des indications pour vous aider à résoudre vos exercices.

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

par leon1789 » 05 Déc 2013, 17:46

Et concrètement, sur l'exemple de fatal_error, cela donne quoi ta méthode ?

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


Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 13:39

par Dlzlogic » 05 Déc 2013, 17:50

Sylviel a écrit:Tout porte bien sur le verbe croire.

Oui, c'est vrai, j'ai beaucoup lu et beaucoup calculé sur ce sujet, je n'ai rien trouvé d'autre.
Mais, si tu as une autre solution, ça pourra en intéresser quelques-uns.
"Je ne crois pas qu'il y ait une autre solution", mais j'ai vérifié, testé, utilisé etc. celle-là. Sinon, je me me permettrais pas de la décrire.
Naturellement, on peut remplacer la phrase du type "résoudre le système" par quelque-chose comme "inverser la matrice", je sais ça fera tout de suite plus sérieux.
PS petite précision je ne suis en aucun cas l'auteur de cette méthode. Je me suis contenté de l'appliquer.

Sylviel
Modérateur
Messages: 6466
Enregistré le: 20 Jan 2010, 13:00

par Sylviel » 05 Déc 2013, 18:10

Sauf que ta "méthode" ne résouds pas le problème posé dans le fil d'origine à savoir déterminer les positions intermédiaires.

De plus si tu connais les caractéristiques de la rotation 2D et que tu sais que tu veux simplement diviser l'angle en 10 tu n'as besoin de résoudre aucun système.


Voici comment obtenir le point X_n à partir du point X



où O est le centre de la rotation et Rn donnée par



avec

Donc encore une fois tu te plantes de problème... Avoir les coeff d'une rotation de même axe et d'angle 1/10 n'a jamais posé de question.

P.S : s'il n'y a qu'un système à résoudre il n'y a aucune raison d'inverser la matrice.

P.P.S : l'argument "j'ai beaucoup utilisé et n'ai rien trouvé d'autres", quand on connait tes opinions sur divers sujet des maths, n'est vraiment pas recevable...
Merci de répondre aux questions posées, ce sont des indications pour vous aider à résoudre vos exercices.

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

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

Dlzlogic a écrit:j'ai beaucoup calculé sur ce sujet

oui, mais pour l'instant, on ne voit pas tes résultats concrets sur l'exemple simple de fatal_error. Une Arlésienne ?

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 13:39

par Dlzlogic » 05 Déc 2013, 19:48

Sylviel a écrit:Sauf que ta "méthode" ne résouds pas le problème posé dans le fil d'origine à savoir déterminer les positions intermédiaires.

De plus si tu connais les caractéristiques de la rotation 2D et que tu sais que tu veux simplement diviser l'angle en 10 tu n'as besoin de résoudre aucun système.


Voici comment obtenir le point X_n à partir du point X



où O est le centre de la rotation et Rn donnée par



avec

Donc encore une fois tu te plantes de problème... Avoir les coeff d'une rotation de même axe et d'angle 1/10 n'a jamais posé de question.

P.S : s'il n'y a qu'un système à résoudre il n'y a aucune raison d'inverser la matrice.

P.P.S : l'argument "j'ai beaucoup utilisé et n'ai rien trouvé d'autres", quand on connait tes opinions sur divers sujet des maths, n'est vraiment pas recevable...

Il est vrai que la question d'origine donne comme hypothèse un outil (la matrice) et non pas les hypothèses de base : le centre de rotation et les trois angles.
J'ai essayé d'orienter notre ami vers la résolution du problème à partir des hypothèses de base et non d'une transformation en matrice.
Mais très vite, sans chercher à comprendre on m'a dit ... ce que tu sais.
Tu as bien observé, en 2D, il n'y a qu'un angle.
En 3D il y a 3 angle, et j'aurais dû ajouter que pour calculer les points intermédiaires dans le cas de 3D, il fallait prendre 10 fois successivement le 1/10 de chacun des angles, si c'est la loi désirée, mais c'est un choix de l'utilisateur, puisqu'il a une infinité de façons de déterminer les figures intermédiaires entre F1 et F2.
J'ai expliqué ce qu'il y avait à expliquer, je pense que dans le cadre d'un forum, c'est ce qu'on peut attendre d'un membre normal.
Souhaitons qu'un membre un peu curieux essaye la méthode que j'ai décrite et qui n'est en aucun cas "ma" méthode.

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

par leon1789 » 05 Déc 2013, 20:05

...message qui n'aurait pas dû être écrit...

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

par fatal_error » 05 Déc 2013, 21:07

@Léon
Merci d'y aller mollo sur l'attitude, tu peux trouver cela amusant, mais d'un point de vue extérieur, tes propos envers Dlzlogic sont limites (quelquesoient ses interventions). Neroito en est la preuve.


@Dlzlogic
J'ai expliqué ce qu'il y avait à expliquer, je pense que dans le cadre d'un forum, c'est ce qu'on peut attendre d'un membre normal.[...]Souhaitons qu'un membre un peu curieux essaye la méthode que j'ai décrite et qui n'est en aucun cas "ma" méthode.

1: tu n'es pas un membre normal. Tu es membre multiplement banni, pour hérésie mathématique, et propension au troll.
2: je fais un point très rapidement. Tu n'es pas crédible auprès des membres habitués. Je suis même surpris que les membres aient pris le temps de lire ta méthode. La première chose à faire, est de montrer au moins que tu sais répondre au problème que tu poses de manière concrète. Et la seconde, d'expliquer ce que tu as fait et pourquoi.

@Dlzlogic
pour toute remarque trollesque, fut-elle une réponse à un troll ou pas, je me verrai contraint de te bannir définitivement.
Je te prie également de ne plus intervenir sur les sujets faisant intervenir des matrices, "tableaux" comme tu les appèles. Hormis celui-ci.
la vie est une fête :)

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 13:39

par Dlzlogic » 05 Déc 2013, 21:24

@ fatal_error,
Bon, je sais pas trop quoi faire, soit je fais un exemple et on m'accuse de troller, sois j'ignore et on me reproche de pas prouver ce que je dis ou plus simplement "on me reproche".
Pour info, j'ai fait un MP à un membre habitué et compétent en citant l'exemple dont il s'agit, avant que nerioto ne dise que ça marchait pas. Que puis-je dire de plus ?
Donc, sauf demande précise et sur un ton positif, je vais me taire tout simplement.

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

par fatal_error » 05 Déc 2013, 21:40

Que puis-je dire de plus

faire l'exercice et montrer que tes pistes ne sont pas que du vent.
la vie est une fête :)

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 13:39

par Dlzlogic » 05 Déc 2013, 22:48

Dur de se comprendre.
Les 9 coefficients dépendent de 3 angles, c'est à dire qu'ils sont le produit de sin et cos de ces 3 angles. Tels qu'ils sont donnés, je ne sais pas en déduire les angles.
Ce que j'ai essayé d'expliquer, c'est que la méthode se situe en amont. Si on établit les paramètres de la relation en fonction des angles (angles d'Euler, sauf erreur), on a perdu une info : la valeur des angles eux-mêmes.
Si on a une figure F1 et qu'on la transforme en figure F2 on utilise 3 angles. C'est cette information qu'il ne faut pas perdre. Dans le cas de la transformation en 2D, c'est facile, parce qu'il n'y a qu'un angle, donc connaissant leur sin et cos, pas de problème pour connaitre l'angle. En 3D, je sais pas le faire, c'est pour cela qu'il faut connaitre et garder l'information de départ.
Mais si on sait résoudre cette équation, alors on peut retrouver les angles, mais ça me parait un peu compliqué de calculer 9 valeurs en fonction de 3 angles puis chercher à retrouver ces angles après.
Il est possible qu'on sache tout de même résoudre le système inverse, c'est à dire retrouver les 3 angles à partir des 9 paramètres, mais je vois pas l'intérêt de se compliquer la vie à ce point.

[EDIT]
Je voudrais préciser un point sur lequel je n'ai pas été assez rigoureux.
Lorsqu'une transformation 3D est définie par 2 séries de 4 points homologue, elle est parfaitement définie.
Par contre, avec ces hypothèses il existe une infinité de "trajets" possibles, et surtout il est difficile de retrouver les paramètres de base de la transformation, centre et angles.
Si on connait les 9 termes de la matrice, on peut trouver une loi qui fasse passer de F1 à F2, en faisant une interpolation quelconque sur les termes, en assurant, à chaque étape que le déterminant est égal à 1, par une correction. Je n'ai pas essayé et le résultat ne sera probablement pas des images intermédiaires telles qu'attendues. Par contre, il est certain que la dernière figure sera bien la figure F2.

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 13:39

par Dlzlogic » 06 Déc 2013, 10:44

Bonjour,
Contrairement à ce que je pensais, le calcul des 3 angles d'Euler à partir des termes de la matrice de rotation est assez simple, et en tout cas peut être codé définitivement.

Donc connaissant la matrice de rotation
1- on s'assure que son déterminant vaut 1
2- on calcul les 3 angles d'Euler.
3- dans une boucle qui incrémente le pas de chacun des 3 angles, on calcule, à chaque étape, la matrice de rotation intermédiaire, en fonction des angles.

La phase qui calcule les matrices intermédiaires dépend de la loi choisie. Le plus simple est naturellement une simple incrémentation et un facteur d'homothétie égal à un. Mais c'est là qu'on pourra mettre des variantes de toute sorte.

note : la formule est un peu longue, je la taperai ainsi que la formule inverse pour trouver les angles, si ça intéresse quelqu'un.

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

par leon1789 » 07 Déc 2013, 07:26

Je comprends bien l'effort qu'il faut fournir pour présenter une(des) formule(s) un peu longue(s), moi-même je ne le fais pas toujours, mais tu pourrais nous présenter une matrice calculée par ta méthode. Sur l'exemple de Fatal_error (ci-dessus), quelle matrice obtiens-tu aux 2/3 du cheminement entre Ma (matrice de départ) et Mb (matrice d'arrivée) ?

La méthode présentée ici http://www.maths-forum.com/showthread.php?p=983575#post983575
produit une matrice Mri(u) pour u parcourant l'intervalle [0, t], de sorte que Mri(0) = Ma et Mri(t) = Mb.
Précisément, aux 2/3 du parcours, i.e. u = 2t/3, on a


Et ta méthode ?

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

par leon1789 » 07 Déc 2013, 07:31

Je comprends bien l'effort qu'il faut fournir pour présenter une(des) formule(s) un peu longue(s), moi-même je ne le fais pas toujours, mais tu pourrais nous présenter une matrice calculée par ta méthode. Sur l'exemple de Fatal_error (ci-dessus), quelle matrice obtiens-tu aux 2/3 du cheminement entre Ma (matrice de départ) et Mb (matrice d'arrivée) ?

La méthode présentée ici http://www.maths-forum.com/showthread.php?p=984603#post984603
produit une matrice M(u) pour u parcourant l'intervalle [0, 1], de sorte que Mri(0) = Ma et Mri(1) = Mb.
Précisément, aux 2/3 du parcours, i.e. u = 2/3, on a


Et ta méthode ?

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 13:39

par Dlzlogic » 07 Déc 2013, 15:18

Tu donnes la matrice aux 2/3 du parcourt, mais ni la matrice de départ, ni la matrice d'arrivée.
En général un énoncé contient les hypothèses, toi tu fais le contraire, tu donnes la solution, pas les hypothèses.

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

par leon1789 » 07 Déc 2013, 15:28

....ben évidemment que j'ai donné les deux matrices Ma de départ et Mb d'arrivée : voir au-dessus le message du 05/12/2013 à 16h46 "exemple de fatal_error"

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 13:39

par Dlzlogic » 07 Déc 2013, 16:21

leon1789 a écrit:....ben évidemment que j'ai donné les deux matrices Ma de départ et Mb d'arrivée : voir au-dessus le message du 05/12/2013 à 16h46 "exemple de fatal_error"

Je résume.
Dans un espace 3D à l'instant Ta on a une rotation Ra de centre O et représentée par sa matrice Ma.
A l'instant Tb on a une rotation Rb de même centre O et représentée par sa matrice Mb.
Soit une figure F qui sera transformée par une rotation Ri à l'instant Ti, en une figure Fi.
On cherche les paramètres de la rotation Ri à l'instant Ti.
Il manque une information : suivant quelle loi les paramètres de la rotation doivent-ils varier ?

Pour éviter toute ambiguïté sur le définition de Ma et Mb, je veux bien que tu les réécrives s'il te plait.

 

Retourner vers ⚜ Salon Mathématique

Qui est en ligne

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