Point at orientation (quaternion) - C++ - Programmation
Marsh Posté le 20-07-2010 à 17:02:51
Si c'est A qui doit s'orienter vers B, ce serait pas plustôt vDir = vB - vA ?
Et ce serait pas le deuxième constructeur qu'il te faudrait ?
NxQuat (const NxReal angle, const NxVec3 &axis)
creates from angle-axis representation
Et non celui que tu utilises:
NxQuat (const NxVec3 &v, NxReal w=0)
copies xyz elements from v, and scalar from w (defaults to 0).
Un NxQuat( 0, (vB-vA).normalize() ) ça donne quoi ?
vDir = vB - vA
vSide = vDir ^ Up
vFront = vCross ^ Up
Angle = acos( vFront.dot( vDir )
NxQuat( Angle, vSide )
Ça donnerai pas ce que tu veux ? (attention à normaliser où il faut )
Marsh Posté le 20-07-2010 à 20:45:57
Salut bjone
bjone a écrit : Si c'est A qui doit s'orienter vers B, ce serait pas plustôt vDir = vB - vA ? |
possible
bjone a écrit : |
Autrement dit ?:
Code :
|
Citation : |
A s'oriente bien dans les 3 dimensions mais ne pointe pas exactement vers B
Quand B tourne autour de A (en XZ), ce dernier pointer vers B uniquement dans un quart de cercle sur le pane X-Z, alors que pour le reste il se dresse en Y ..comme s'il pivotait dans le 1/4 d'une sphère imaginaire (en XYZ)
ps: hum, 1ere fois que j'utilise ^, comment se comporte ce xor avec vDir et Up ?
-----------------------------------------------------------------------------------------------------------
Sinon je crois avoir trouvé une bonne explication de Minorlogic http://www.euclideanspace.com/math [...] rlogic.htm
mais j'ai un doute sur le transcription (PhysX) de la ligne //A avec len_squared()
...en //B avec ()distanceSquared() ?
...ou en //C avec magnitudeSquared() ??
Est que le carré de la longueur d'un vecteur correspond au carré de sa magnitude ?
Code :
|
...en essayant les 2 solutions, ça ne fait pas l'affaire non plus
Voilou,
j'espère ne pas trop brouiller le problème avec ces 2 tentatives merci
Marsh Posté le 21-07-2010 à 12:25:51
^ c'est un symbole papier utilisé pour le produit vectoriel, enfin de ce qui me reste de mes cours de méca
(bon tu me diras, pour le .dot j'aurai pu utiliser . ou X )
En fait mon idée devait être fausse
Marsh Posté le 20-07-2010 à 10:48:45
Bonjour à tous
J'essaie de comprendre comment utiliser un quaternion (NxQuat de PhysX) pour qu'un objet A pointe vers B...
Pour l'instant A pointe vers B seulement sur le plan axial X-Z :
...à première vue A semble tourner dans la bonne direction mais en déplacant B autour de A
je me rends compte que ce dernier fait 2 tours au lieu de 1 !?
Si la démarche est bonne, comment pourrais-je diviser mon angle de rotation ?
merci