honrisse | 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 :
- { osg::Vec3 ref,axis,monpoint,ap,inv;
- ref.set(0.0f,0.0f,-1.0f);
- ref.normalize();
- monpoint.set(2.523f,-5.390f,0.0f);
- axis.set(-1.0f,0.0f,0.0f); axis.normalize();
- ap=ref^axis; result=ap^monpoint; //qui devrait me donner -2.523,-5.390,0.0f
- }
|
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
|