| Previous topic :: Next topic |
| Author |
Message |
boboss02
Offline
Joined: 28 Nov 2007 Posts: 51
|
Posted: Tue 24 Jun - 13:14 Post subject: recuperer les angles a partir d'un quaternio |
|
|
bonjour
je n'arrive pas a récuperer les angles X Y Z d'un shape a partir de son quaternion.
voila comment je recupere le quaternion | Code: | NxOgre::Actor::CollisionModel models = ((entity*)pont->tabObjet[indiceCourant])->getBod()->getCollisionModel();
[size=12]NxQuat quatt;
[/size][size=12]models[indiceShape]->getNxShape()->isBox()->getLocalOrientation().toQuat(quatt);
[/size]
|
dans quatt j'ai mon quaternion.
et je rouve pas de fonction dans la classe NxQuat qui me permet de recuperer les angles sur chaque axe.
merci de votre aide
|
|
| Back to top |
|
 |
L5D
Offline
Joined: 17 Jun 2008 Posts: 11
Localisation: France Belfort
|
Posted: Tue 24 Jun - 14:51 Post subject: recuperer les angles a partir d'un quaternio |
|
|
J'ai pas trouvé la classe quaternion de Nx par contre j'ai trouvé celle de Ogre, je suis pas sur du tout, mais les quaternions et ogre et ceux de Nx ne sont-ils pas les mêmes ?
Si c'est le cas, tu peux récupérer les valeurs des angles des différents axes avec :
Radian getRoll();
Radian getPitch();
Radian getYaw();
Bon je suis aussi un débutant donc c'est ptet faux, mais bon.
|
|
| Back to top |
|
 |
boboss02
Offline
Joined: 28 Nov 2007 Posts: 51
|
Posted: Tue 24 Jun - 15:30 Post subject: recuperer les angles a partir d'un quaternio |
|
|
non ça ne marche pas , ce ne sont pas les même classes
ça serait trop facile sinon
|
|
| Back to top |
|
 |
gus
 Offline
Joined: 25 Jun 2007 Posts: 133
|
Posted: Tue 24 Jun - 15:51 Post subject: recuperer les angles a partir d'un quaternio |
|
|
essay:
| Code: | NxReal Angle;
quatt->getAngleAxis(Angle,NxVec3(0,0,1));
| Le vecteur correspond a ton axe. _________________ http://easy3dgames.tuxfamily.org/
|
|
| Back to top |
|
 |
boboss02
Offline
Joined: 28 Nov 2007 Posts: 51
|
Posted: Wed 25 Jun - 09:47 Post subject: recuperer les angles a partir d'un quaternio |
|
|
voici le code de la fonction getangleAxis()
| Code: | return axis and angle of rotation of quaternionangle = NxMath::acos(w) * NxReal(2.0);// this is getAngle()NxReal sa = NxMath::sqrt(NxReal(1.0) - w*w);
if (sa)
{
axis.set(x/sa,y/sa,z/sa);
angle = NxMath::radToDeg(angle);
}
else
axis.set(NxReal(1.0),NxReal(0.0),NxReal(0.0));
|
cete fonction modifie le parametre angle et aussi le parametre axis. et je ne vois pas comment je peux sortir mes 3 angles de ça !
edit : apres quelques essais , j'obtiens un angle correcte seulement dans le cas d'une rotation sur un seul axe des que je tourne sur un autre axe la valeur ne correspond plus !
|
|
| Back to top |
|
 |
gus
 Offline
Joined: 25 Jun 2007 Posts: 133
|
Posted: Wed 25 Jun - 12:54 Post subject: recuperer les angles a partir d'un quaternio |
|
|
Tu peu convertire ton quaterninon NxOgre vers Ogre en donnant w,x,y et z et utiliser les fonctions getPitch etc.
Sinon,j'avais mal lue la doc , mais c'est bizard.Sa donne l'impression qu'un quaternion peut se résumer par une rotation autour d'un axe et que la composée de rotations dans l'espace est elle même un rotation dans l'espace...ce qui me parait faux(mais bon,je suis pas un pro des quaternion non plus,je suis en terminale^^). _________________ http://easy3dgames.tuxfamily.org/
|
|
| Back to top |
|
 |
boboss02
Offline
Joined: 28 Nov 2007 Posts: 51
|
Posted: Wed 25 Jun - 13:10 Post subject: recuperer les angles a partir d'un quaternio |
|
|
l'idée de passer par la classe quaternion de ogre n'est pas bete du tout. mais j'ai choisi une autre solution qui consiste a utiliser 3 quaternions ( cad 1 par rotatition sur un axe ) ce qui me donne ça :
| Code: | [size=12]NxQuat Q1,Q2,Q3,Q;
Q1 = NxQuat(newRotX,NxVec3(1,0,0));
Q2 = NxQuat(newRotY,NxVec3(0,1,0));
Q3 = NxQuat(newRotZ,NxVec3(0,0,1));
Q = Q1 * Q2 * Q3; // rotation globale
float angleX = [size=12]NxMath::radToDeg(Q1.getAngle();[/size]
[size=12]float angleY = [size=12]NxMath::radToDeg(Q2.getAngle();[/size]
[size=12]float angleZ = [size=12]NxMath::radToDeg(Q3.getAngle();[/size]
[/size][/size][/size]
|
mais j'essaierais ta methode des que j'ai un peu de temps
alors le bac c'etait comment ? ( je suppose que tu es en S ?)
|
|
| Back to top |
|
 |
gus
 Offline
Joined: 25 Jun 2007 Posts: 133
|
Posted: Wed 25 Jun - 14:20 Post subject: recuperer les angles a partir d'un quaternio |
|
|
Oui j'avais penser a cette methode,mais je n'en etait pas trop sur,mes connaissances sur les quaternions etant limitées.
Sinon le bac en maths et en physique sa va,dans le reste c'est moins glorieux^^ _________________ http://easy3dgames.tuxfamily.org/
|
|
| Back to top |
|
 |
boboss02
Offline
Joined: 28 Nov 2007 Posts: 51
|
Posted: Wed 25 Jun - 14:38 Post subject: recuperer les angles a partir d'un quaternio |
|
|
pour le bac c'etait pareil pour moi
|
|
| Back to top |
|
 |
gus
 Offline
Joined: 25 Jun 2007 Posts: 133
|
Posted: Wed 25 Jun - 16:45 Post subject: recuperer les angles a partir d'un quaternio |
|
|
Apres avoir demander,dans l'espace la composé de 2 rotation est une rotation.
Avec la commande que j'avais dit avant,il faudrait plutot faire:
| Code: | NxReal Angle;
NxVec3 Axe;
quatt->getAngleAxis(Angle,Axe);
| Et tu aurais alors l'angle et l'axe de la rotation représenté par le quaternion.
Tu a passer ton bac il y a combien de temps? _________________ http://easy3dgames.tuxfamily.org/
|
|
| Back to top |
|
 |
|