Calcul de matrice par biblothéque osg

Calcul de matrice par biblothéque osg - C++ - Programmation

Marsh Posté le 20-11-2014 à 15:57:02    

Bonjour ,
Je cherche à calculer une matrice en utilisant la bibliothéque osg.
 
voici un listing de code pour essayer de calculer un point avec transformation de matrice.
 
Code:
 

Code :
  1. { osg::Vec3 ref,axis,monpoint,ap,inv;
  2. ref.set(0.0f,0.0f,-1.0f);
  3. ref.normalize();
  4. monpoint.set(2.523f,-5.390f,0.0f);
  5. axis.set(-1.0f,0.0f,0.0f); axis.normalize();
  6. ap=ref^axis; result=ap^monpoint; //qui devrait me donner -2.523,-5.390,0.0f
  7. }


 
je voudrais retrouver par le calcul d'une matrice un point qui est égal à 'result=-2.523,-5.390,0.0' , ce qui donne actuellement 0.0,0.0,-2.52,
pour cela pouvez-vous me corriger au niveau code ?
 
 
Merci.

Reply

Marsh Posté le 20-11-2014 à 15:57:02   

Reply

Marsh Posté le 20-11-2014 à 23:22:19    

yann58 a écrit :

Bonjour ,
Je cherche à calculer une matrice en utilisant la bibliothéque osg.
 
voici un listing de code pour essayer de calculer un point avec transformation de matrice.
 
Code:
 

Code :
  1. { osg::Vec3 ref,axis,monpoint,ap,inv;
  2. ref.set(0.0f,0.0f,-1.0f);
  3. ref.normalize();
  4. monpoint.set(2.523f,-5.390f,0.0f);
  5. axis.set(-1.0f,0.0f,0.0f); axis.normalize();
  6. ap=ref^axis; result=ap^monpoint; //qui devrait me donner -2.523,-5.390,0.0f
  7. }


 
je voudrais retrouver par le calcul d'une matrice un point qui est égal à 'result=-2.523,-5.390,0.0' , ce qui donne actuellement 0.0,0.0,-2.52,
pour cela pouvez-vous me corriger au niveau code ?
 
 
Merci.


 
Bonjour,
 
J'ai du mal à comprendre ce que vous souhaitez faire en lisant la question.
Je ne connais pas la bibliothèque OSG.
Si vous voulez calculer la matrice de rotation R entre deux points tel que P1(x1, y1, z1) = R x P2(x2, y2, z2), cf ces liens (mais il faut plus que seulement deux points) :

Si c'est calculer la matrice de rotation à partir d'une représentation (axe de rotation + angle) : https://fr.wikipedia.org/wiki/Rotat [...] n.C3.A9ral
 
 
Edit :
Beaucoup plus simple (même si cela ne semble pas répondre à la question originale), si les deux points sont exprimés dans le même repère, on peut bien évidemment calculer l'angle et l'axe de rotation et donc la matrice de rotation R.
Par exemple ici, avec P1 = R.P2 et P1 = (-2.523,-5.390,0.0f) et P2 = (2.523f,-5.390f,0.0f), on a  
R = [    0.6405    0.7679         0
          -0.7679    0.6405         0
          0         0    1.0000 ]


Message édité par honrisse le 22-11-2014 à 00:53:55
Reply

Marsh Posté le 21-11-2014 à 09:13:09    

Je voulais dire modifier le code pour que le résultat du produit vectoriel (ref axis monpoint)
donne -2.523,-5.390 au lieu de 0.0,0.0,-2.52

Reply

Marsh Posté le 22-11-2014 à 00:08:11    

yann58 a écrit :

Je voulais dire modifier le code pour que le résultat du produit vectoriel (ref axis monpoint)
donne -2.523,-5.390 au lieu de 0.0,0.0,-2.52


 
Qu'est ce qui est fixe et qu'est ce qui est variable parmi ref, axis et monpoint ?
Si monpoint et result sont constantes et le reste variable, pour moi c'est pas possible.
Dans result = ap^monpoint, result et monpoint ne sont pas perpendiculaires avec result=(-2.523,-5.390,0.0f ) et monpoint=(2.523f,-5.390f,0.0f).

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed