# Applications > Dveloppement 2D, 3D et Jeux > Moteurs 3D >  [MATH] Matrice de changement de repre.

## Mr Meuble

Bonjour,

Je suis en train de faire un petit programme de raytracing et j'ai un petit problme pour le lanc des rayons : Je n'arrive pas  aligner mon ecran avec la direction de la camera.

En fait, je voudrais crer un nouveau repre dans lequel l'axe z' correspondrai  la direction (D) de la camera mais je ne vois pas comment faire.

En fait je veux determiner la matrice M tel que

R' = M.R

avec


```

```

J'ai regardais dans la faq mais je n'ai pas trouv comment faire. Je sais que M doit etre le produit de plusieurs matrice de rotation mais je n'arrive pas  les trouver.

Si quelqu'un a une ide.

Merci

----------


## N_I_C_S

Salut, 

si R' = M.R doit tre ton nouveau repre orthonorm classique, je pense que tu as plutt besoin de M-1 (euh, matrice inverse de M  ::roll::  ), cad celle par laquelle tu pourra multiplier toute ta scne dans R pour la retrouver dans R'.
Par exemple, si tu veux baisser la camra de 20 deg. et la tourner  droite de 40 deg., tu multiplieras toute ta scne par la matrice [gauche 40 deg. haut 20 deg.]. Et l'cran sera align avec le nouveau repre.

----------


## ybart

Ca peut servir  d'autres : 

On souhaite trouver une matrice M telle que :
R' = M . R

C'est  dire, une matrice M permettant d'crire un vecteur exprim dans la base R, dans la base R'.

Pour cela multiplions  droite par 1/R (en supposant R inversible, ce qui est acquis si R est une base) :
R' . 1/R = M . R . 1/R

Aprs simplification (R . 1/R = IId) :
M = R' . 1/R

Pour crire les vecteurs exprims dans la nouvelle base vers la premire base, reprenons l'hypothse initiale :
R' = M . R

Multiplions  gauche par 1/M, et aprs simplification (1/M . M = IId) :
R = 1/M . R'

----------


## totem

bonjour, et merci pour ces precisions.

je voulais etre sur de la methode pour calculer les reperes R et R' :
je pars du noeud, et je multiplie les matrices de transformation jusqu'a la racine, ou l'inverse : je pars de la racine et je multiplie jusqu'au noeud ?

----------


## Harooold

Si j'ai bien compris le problme ...
Quand on dfinit le volume de vision avec gluPerspective, les valeurs du Znear et Zfar doivent tre positives, et gluPerspective les inverse.
Ce qui fait que le volume de vision est dirig par dfaut vers les Z ngatifs, contrairement au repre objet de la camra qui lui  son Z dans le mme sens que l'axe Z du repre scne.

Du coup a fait que la camera "regarde" dans la direction de ses Z ngatif.
La solution est donc de faire un changement de repre, juste en inversant l'axeZ  avant de faire toute autre chose. La camera regardera dans le bon sens !



```

```

Le point de vise de ta camera sera maintenant le point que pointe le vecteur Z du repre objet de la camera.

----------


## v3nu5

Bonjour,

J'ai lu dans les FAQ que la matrice correspondant  un systme de coordonnes (O, i, j, k ) est:


```

```

Je voudrais utiliser cette proprit pour calculer une matrice de changement de repre, mais je rencontre le problme suivant:

Le repre de base est ( O, i, j, k ) avec O( 0, 0, 0 ), i( 1, 0, 0 ), j( 0, 1, 0 ) et k( 0, 0, 1 ). Cela fait donc la matrice:


```

```

Jusque l, tout va bien.

Le nouveau repre est ( O', i', j', k' ) avec O'( xo', yo', zo' ), i'( xi', yi', zi' ), j'( xj', yj', zj' ) et k'( xk', yk', zk' ).
J'ai pris soin de choisir i', j' et k' normaliss.

- Premire question: comment matrialise-t-on O'. Est-ce de cette manire?


```

```

L'ide tant d'appliquer une translation, vous l'aurez remarqu.


- "la matrice de rotation peut tre calcule via la multiplication de la matrice finale avec l'inverse de la matrice de dpart." (cf.FAQ)
Ok, donc on multiplie la matrice M' de ( O', i', j', k' ) par l'inverse de la matrice M de ( O, i, j, k )
Or, l'inverse d'une matrice identit est la matrice identit, donc il s'agit de multiplier M' par la matrice identit, ce qui revient  M'

De ce fait, me suffira-t-il donc de transformer P( xp, yp, zp ) de ( O, i, j, k ) pour obtenir ses coordonnes dans ( O', i', j', k' ) ?

----------


## Lokkook

Bonjour  tous,

v3nu5, la rponse a tes questions m'intressent galement  ::lol:: 
Est-ce que tu tais sur la bonne voie ?

Merci !
Lokkook

----------

