[C++]Matrice de transformations
Fermé
elodie
-
4 mars 2007 à 12:49
mamiemando Messages postés 33410 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 2 décembre 2024 - 6 nov. 2009 à 13:21
mamiemando Messages postés 33410 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 2 décembre 2024 - 6 nov. 2009 à 13:21
5 réponses
mamiemando
Messages postés
33410
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
2 décembre 2024
7 808
3 mai 2008 à 13:23
3 mai 2008 à 13:23
Tu peux regarder ici :
https://fr.wikipedia.org/wiki/Rotation_vectorielle
Le problème c'est que si le centre n'est pas O ce n'est plus une transformation linéaire ((ie sous la forme Y = A.X) donc tu ne peux pas l'exprimer sous forme de produit matriciel
En gros il faudrait faire une translation -T (ou T désigne la transformation qui transforme O en ton centre de rotation) avant, faire une rotation R, puis faire une translation de -T. Soit I la matrice identité. Ta rotation est alors pour un point X s'écrit :
avec A = R et B = (I-R).T (transformation affine).
Bonne chance
https://fr.wikipedia.org/wiki/Rotation_vectorielle
Le problème c'est que si le centre n'est pas O ce n'est plus une transformation linéaire ((ie sous la forme Y = A.X) donc tu ne peux pas l'exprimer sous forme de produit matriciel
En gros il faudrait faire une translation -T (ou T désigne la transformation qui transforme O en ton centre de rotation) avant, faire une rotation R, puis faire une translation de -T. Soit I la matrice identité. Ta rotation est alors pour un point X s'écrit :
Y = R.(X - T) + T Y = A.X + B
avec A = R et B = (I-R).T (transformation affine).
Bonne chance
lirey83
Messages postés
75
Date d'inscription
mardi 2 janvier 2007
Statut
Membre
Dernière intervention
18 août 2007
13
4 mars 2007 à 21:25
4 mars 2007 à 21:25
Si je ne trompe pas, pour la translation il suffit d'additionner le vecteur de translation, pour l'homothétie de multiplier par le facteur et pour la rotation de multiplier par la matrice ((cos(T), sin(T)), (-sin(T), cos(T))) ou T est l'angle de rotation. Donc on utilise une matrice que dans le cas de la rotation.
A savoir que tu as indiqué une matrice de rotation d'angle T (et tu as sous entendu que la rotation était de centre O(0,0))
elhandy
Messages postés
1
Date d'inscription
samedi 3 mai 2008
Statut
Membre
Dernière intervention
3 mai 2008
3 mai 2008 à 12:06
3 mai 2008 à 12:06
Salut!
Et pour le cas ou la rotation ne se fera pas par rapport à l'origine c'est quoi qui change ?!
Et pour le cas ou la rotation ne se fera pas par rapport à l'origine c'est quoi qui change ?!
mamiemando
Messages postés
33410
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
2 décembre 2024
7 808
6 nov. 2009 à 01:18
6 nov. 2009 à 01:18
A priori c'est une homotéthie H = K.R et une translation et elle s'exprime sous la forme : Y = H.(X - T) + T
avec :
H = K.R avec K la matrice qui effectue le rapport d'échelle,
R la matrice de rotation,
T le vecteur de translation,
X le vecteur associé au point auquel on applique la transformation.
Enfin j'ai pu me tromper mais au feeling ça doit être ça.
Bonne chance
avec :
H = K.R avec K la matrice qui effectue le rapport d'échelle,
R la matrice de rotation,
T le vecteur de translation,
X le vecteur associé au point auquel on applique la transformation.
Enfin j'ai pu me tromper mais au feeling ça doit être ça.
Bonne chance
Merci pour ta réponse.
Je présume donc que si on souhaite rajouter la transformation de réflexion R'.
On obtient H = K.R.R'
K la matrice qui effectue le rapport d'échelle
R la matrice de rotation
J'étudie un modèle de mouvement affine tel que X'=AX+d,
avec A = 1+D
D = [Dxx Dxy; Dyx Dyy]
d = [dx ;dy]
où D est la matrice de déformation (qui englobe rotation, changement d'échelle et réflexion)
et d une translation pure.
je souhaiterai exprimer les paramètres Dxx,Dxy,Dxy et Dyy en fonction des paramètres utilisé à la fois
pour des transfo de rotation, de changement d'échelle..
Rappel des transfo:
-pour la tranlation, Tt = [1 0 dx ; 0 1 dy ; 0 0 1]
-pour le changement d'échelle,Ts = [k 0 0 ; 0 k' 0 ; 0 0 1]
-pour la rotation, Tr = [cos(i) -sin(i) 0 ; sin(i) cos(i) 0 ; 0 0 1]
-réflexion par rapport à l'axe des x par exple, Tr' = [1 0 0 ; 0 -1 0 ; 0 0 1]
Je présume donc que si on souhaite rajouter la transformation de réflexion R'.
On obtient H = K.R.R'
K la matrice qui effectue le rapport d'échelle
R la matrice de rotation
J'étudie un modèle de mouvement affine tel que X'=AX+d,
avec A = 1+D
D = [Dxx Dxy; Dyx Dyy]
d = [dx ;dy]
où D est la matrice de déformation (qui englobe rotation, changement d'échelle et réflexion)
et d une translation pure.
je souhaiterai exprimer les paramètres Dxx,Dxy,Dxy et Dyy en fonction des paramètres utilisé à la fois
pour des transfo de rotation, de changement d'échelle..
Rappel des transfo:
-pour la tranlation, Tt = [1 0 dx ; 0 1 dy ; 0 0 1]
-pour le changement d'échelle,Ts = [k 0 0 ; 0 k' 0 ; 0 0 1]
-pour la rotation, Tr = [cos(i) -sin(i) 0 ; sin(i) cos(i) 0 ; 0 0 1]
-réflexion par rapport à l'axe des x par exple, Tr' = [1 0 0 ; 0 -1 0 ; 0 0 1]
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mamiemando
Messages postés
33410
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
2 décembre 2024
7 808
6 nov. 2009 à 13:21
6 nov. 2009 à 13:21
Bon en fait ici c'est pas un forum de maths, donc dans le doute il vaudrait mieux te renseigner via d'autres sources parce que ce n'est pas forcément notre spécialité et on peut se craquer.
En fait en maths, une rotation r, un changement d'échelle k, une réflexion m et plus généralement une homotéthie h centrées en O (l'origine du repère) sont des transformations linéaires, c'est-à-dire qu'elles s'expriment sous la forme Y = A.X ou X est le vecteur associé au point transformé, Y le point transformé, et A la matrice associée à la transformation (respectivement R, K, M ou H).
D'un point de vue matriciel, une composition de fonctions linéaires revient à un produit matriciel. De la même façon que la composition de fonction n'est en général pas commutative, un produit matriciel ne l'est pas plus sauf dans des cas particuliers. Ainsi en général :
- f o g n'est pas égal à g o f (ou o est l'opérateur "rond", l'opérateur de composition des fonctions)
- F . G n'est pas égal à G . F.
Si tu regardes la formule du produit matriciel, tu peux facilement montrer que si F ou G est diagonale, alors F.G = G.F... ce qui est le cas ici avec ta matrice de facteur d'échelle K et de rotation R. Idem avec la matrice de réflexion M. D'un point de vue géométrique, cela revient à dire "peu importe l'ordre dans lequel on fait la rotation, la réflexion et le facteur d'échelle" : H = M.K.R = R.K.M = ...
Le problème, c'est quand la transformation n'est pas centrée en O (ce qui somme toute est souvent le cas), par exemple centrée en O'. Dans ce cas là il faut faire un changement de repère de sorte à se ramener au cas que l'on connaît. C'est le rôle de la translation t qui transforme O' en O. Ensuite on applique la transformation H puis on revient en O'. Concrètement, ceci revient à soustraire/ajouter un vecteur T, d'où la formule que je t'ai donné. Tu constates du coup que la formule n'est plus linéaire (de la forme Y = A.X) mais affine (car Y = H.(X - T) + T est bien de la forme Y = A.X + B).
À présent, si tu as tout bien suivi, il suffit d'exprimer chacune de tes matrices avec les bons coefficients, regarder un cours sur les matrices pour apprendre à calculer un produit et une addition matricielle et c'est plié ;-)
Bonne chance
En fait en maths, une rotation r, un changement d'échelle k, une réflexion m et plus généralement une homotéthie h centrées en O (l'origine du repère) sont des transformations linéaires, c'est-à-dire qu'elles s'expriment sous la forme Y = A.X ou X est le vecteur associé au point transformé, Y le point transformé, et A la matrice associée à la transformation (respectivement R, K, M ou H).
D'un point de vue matriciel, une composition de fonctions linéaires revient à un produit matriciel. De la même façon que la composition de fonction n'est en général pas commutative, un produit matriciel ne l'est pas plus sauf dans des cas particuliers. Ainsi en général :
- f o g n'est pas égal à g o f (ou o est l'opérateur "rond", l'opérateur de composition des fonctions)
- F . G n'est pas égal à G . F.
Si tu regardes la formule du produit matriciel, tu peux facilement montrer que si F ou G est diagonale, alors F.G = G.F... ce qui est le cas ici avec ta matrice de facteur d'échelle K et de rotation R. Idem avec la matrice de réflexion M. D'un point de vue géométrique, cela revient à dire "peu importe l'ordre dans lequel on fait la rotation, la réflexion et le facteur d'échelle" : H = M.K.R = R.K.M = ...
Le problème, c'est quand la transformation n'est pas centrée en O (ce qui somme toute est souvent le cas), par exemple centrée en O'. Dans ce cas là il faut faire un changement de repère de sorte à se ramener au cas que l'on connaît. C'est le rôle de la translation t qui transforme O' en O. Ensuite on applique la transformation H puis on revient en O'. Concrètement, ceci revient à soustraire/ajouter un vecteur T, d'où la formule que je t'ai donné. Tu constates du coup que la formule n'est plus linéaire (de la forme Y = A.X) mais affine (car Y = H.(X - T) + T est bien de la forme Y = A.X + B).
À présent, si tu as tout bien suivi, il suffit d'exprimer chacune de tes matrices avec les bons coefficients, regarder un cours sur les matrices pour apprendre à calculer un produit et une addition matricielle et c'est plié ;-)
Bonne chance
6 nov. 2009 à 00:23
Si on prend chaque tranformation indépendamment, on a:
-pour la tranlation, Tt = [1 0 dx ; 0 1 dy ; 0 0 1]
-pour le changement d'échelle,Ts = [k 0 0 ; 0 k' 0 ; 0 0 1]
-pour la rotation, Tr = [cos(i) -sin(i) 0 ; sin(i) cos(i) 0 ; 0 0 1]
-réflexion par rapport à l'axe des x par exple, Tr' = [1 0 0 ; 0 -1 0 ; 0 0 1]
Je voudrai savoir comment s'exprime la matrice de transformation affine T = [m1 m2 m3 ; m4 m5 m6; m7 m8 m9 ] lorsqu'on souhaite que cette matrice tient compte à la fois du changement d'échelle, de la rotation, de la translation et de la réflection également.