Bonjour,
J'ai différents points 4D (X, Y, Z et W) et je les transforment grâce à des matrices 4x4:
Ensuite, j'aimerais transformer uniquement les coordonnées X et Y des 'transformedPoints'.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 transformedPoints[x] = points[x]*viewMatrix*projectionMatrix; transformedPoints[x] = transformedPoints[x] / transformedPoints[x].W; ....
J'ai donc pour ce faire une matrice 3x3 (je n'utilise pas une matrice 2x2 car je dois faire des translations). Problème: on ne sais pas multiplier une matrice 3x3 avec un point 4D. Je transforme donc ma matrice 3x3 en une matrice 4x4:
Maintenant, je peux faire ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Matrix4x4 matrice2DTransform( m3x3.e11,m3x3.e12, 0.0, m3x3.e13, m3x3.e21, m3x3.e22, 0.0, m3x3.e23, 0.0, 0.0, 1.0, 0.0, m3x3.e31, m3x3.e32, 0.0, m3x3.e33);
Problème: "transformedPoints[x].W" ne vaut pas "1" et donc la composante "Z" de mon point va être transformé. La matrice "matrice2DTransform" n'est censé me modifier que les composantes X et Y de mes points vu que c'est une matrice de transformation 2D à la base...mais ça n'est pas le cas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 .... transformedPoints[x] = transformedPoints[x]*matrice2DTransform; transformedPoints[x] = transformedPoints[x] / transformedPoints[x].W;
Où est mon erreur dans ma façon de faire ?
Merci d'avance.
Partager