Le langage SMS est exclu sur les forums ProgBoards, tout message ne respectant pas la charte sera déplacé, modifié, ou supprimé par nos modérateurs.

Forum Informatique » Algorithmes » Les matrices sous OpenGL ...

Fred
ProgBoarder
Citer Windows XP Firefox 2 - Posté le 24/06/2008 à 12:42
Une question me tarabiscote,
la matrice de translation :

Avec OpenGL, on travaille dans l'espace des matrices 4x4,
normalement, une matrice carrée est sensée pouvoir représenter
toute application linéaire d'un espace de dimension 4 vers un
autre de même dimension (morphisme).

Or la translation est une bijection, et donc une application
linéaire (jusque la j'ai bon ?)

Le problème vient du fait que je dois mal comprendre le
produit d'un vecteur par une matrice :

Soient U € R4, M € Mn4,4

U = (x,y,z,w),
M = (a1,a5,a9,a13)
(a2,a6,a10,a14)
(a3,a7,a11,a15)
(a4,a8,a12,a16)

Normalement,
U x M = U x Id4,4 x M
= (x,0,0,0)
(0,y,0,0) x M
(0,0,z,0)
(0,0,0,w)

Ce qui amène à une matrice 4x4 produit aisément calculable,
seulement a13, a14, a15 sont sensés être les coordonnées
de la translation dans la base des 3 premières colonnes
et quand je fais le produit il n'apparait rien de tel !

Et je ne comprend pas comment le résultat du produit U x M
peut me donner un nouveau vecteur V, faudrait il additionner,
multiplier des colonnes, ne prendre en compte que les coéfficients
diagonaux ? (je m'embrouille ...).

Aidez moi s'il vous plait !


Edité par Fred ( 24/06/2008 12:44:36 )
Purée faut que je change d'avatar !
Fred
ProgBoarder
RemonterCiter Windows XP Firefox 2 - Posté le 24/06/2008 à 12:53
[Auto réponse]

Je crois que j'ai trouvé !
En fait c'est pas U x M
qui faut faire, c'est M x U (sourire)
(M x U <=> f(U), f associée à la matrice)

(What a shame on me ...)


[/Auto réponse]
Purée faut que je change d'avatar !
RemonterCiter Linux Firefox 3 - Posté le 24/06/2008 à 12:55
Je peux marquer "Résolu" ou tu as besoin d'autres réponses que la tienne ? (sourire)
Change la caféine en lignes de code, et aurait parfois besoin de l'inverse.
zuzuf
ProgBoarder
RemonterCiter Linux Firefox 3 - Posté le 24/06/2008 à 15:07
Attention, la translation n'est pas une application linéaire de l'espace dans lui même. Par contre dans un espace 4D on peut tricher un peu avec cette coordonnée w. Quand w vaut 0 dans un quadruplet (x,y,z,w) on considère qu'il s'agit du vecteur (x,y,z) dans l'espace et qu'il n'indique qu'une direction, sinon c'est le point de coordonnées (x/w,y/w,z/w), c'est pourquoi on prend souvent w = 1 (si tu veux faire les calculs à la main il ne faut pas l'oublier sinon ça donne des résultats bizarres, pour plus de détails voir la doc du canal de rendu OpenGL).

Le truc après, c'est que la plupart des implémentation OpenGL optimisent en interne les fonctions glTranslatef(...), glRotatef(...), ... ça permet de gagner un peu en performances. C'est pourquoi il est souvent préférable de laisser OpenGL faire joujou avec les matrices (sourire)
Linux a un noyau, windows un pepin
Fred
ProgBoarder
RemonterCiter Windows XP Firefox 2 - Posté le 25/06/2008 à 19:36
Merci Zuzuf
Purée faut que je change d'avatar !

Poster une réponse

STOP aux fautes volontaires !
Message
Formatage
Note: pour partager du code source, merci d'utiliser le wall !
Smileys (sourire) (yekyek) (clein d'oeil) (désapprouve) (triste) (cool) (langue) (confus) (gêné) (neutre) (eek) (surpris) (diable) (flèche) (exclamation) (question) (diable) (idée) (méchant)
Pseudonyme
Recopiez le code
v6 © Computaid SPRL 2005-2010 - Tous droits réservés - Hébergé par eTigris - Page générée en 0,016 s - Crédits - Stats
1 connecté