Angles d'Euler entre deux vecteurs 3d
Comment trouvez-vous les 3 angles d'euler entre 2 vecteurs 3D?
Quand j'ai un Vector et je veux obtenir sa rotation, ce lien peut être utilisée habituellement: Calculer les rotations de regarder un point 3D?
Mais comment dois-je faire lors du calcul selon l'un de l'autre?
Votre question n'est pas correct. Vous avez besoin de trois angles si vous souhaitez aligner deux référence. Si vous avez besoin seulement d'aligner deux vecteurs, alors que deux angles sont nécessaires.
Comment calculez-vous les deux angles? Et comment se fait le BVH format de fichier (davedub.co.royaume-uni/bvhacker) a 3 angles pour le déplacement de l'os?
Comment calculez-vous les deux angles? Et comment se fait le BVH format de fichier (davedub.co.royaume-uni/bvhacker) a 3 angles pour le déplacement de l'os?
OriginalL'auteur tomyake | 2013-02-26
Vous devez vous connecter pour publier un commentaire.
Comme d'autres l'ont déjà souligné, votre question doit être révisé. Appelons votre vecteurs
a
etb
. Je suppose quelength(a)==length(b) > 0
sinon je ne peut pas répondre à la question.Calculer la la croix du produit de vos vecteurs
v = a x b
;v
donne la axe de rotation. Par le calcul de l' produit scalaire, vous pouvez obtenir le cosinus de l' angle vous devez tourner aveccos(angle)=dot(a,b)/(length(a)length(b))
, et avecacos
vous pouvez uniquement à déterminer l'angle (@Archie merci de remarquer mon erreur précédente). À ce stade, vous avez le angle de l'axe de la représentation de votre rotation.Le reste des travaux est de convertir cette représentation à la représentation que vous recherchez: angles d'Euler. La Conversion de l'Axe-Angle d'Euler est une façon de le faire, comme vous l'avez trouvé. Vous avez à gérer le cas dégénéré lorsque
v = [ 0, 0, 0]
, qui est, lorsque l'angle est de 0 ou 180 degrés.Personnellement, je n'aime pas les angles d'Euler, ils vis de la stabilité de l'application et ils ne sont pas appropriés pour l'interpolation, voir aussi
Comportement étrange avec android capteur d'orientation
L'interpolation entre les matrices de rotation
Que pensez-vous de cette méthode:euclideanspace.com/maths/geometry/rotations/conversions/...
Oui, de rectification, de fixe. En fait le produit scalaire et
acos
est assez.Oui, ça semble être un moyen plus facile de le faire.
OriginalL'auteur Ali
Au premier abord, vous devez soustraire un vecteur de vecteur de deux afin d'obtenir le vecteur de deux par rapport à un vecteur. Avec ces valeurs, vous pouvez calculer les angles d'Euler.
Pour comprendre le calcul du vecteur d'Euler de manière intuitive, permet d'imaginer une sphère avec un rayon de 1 et de l'origine au centre. Un vecteur représente un point sur sa surface en coordonnées 3D. Ce point peut également être défini par des sphérique 2D coordonnées: latitude et longitude, de tangage et de lacet, respectivement.
Afin de "rouler" <- pitch <- lacet" calcul peut être fait comme suit:
Pour calculer le mouvement de lacet vous calculer la tangente des deux planaire axes (x et z), considérant le quadrant.
Pitch est tout à fait le même, mais que son plan est tourné avec lacet le 'près' est sur deux axes. Afin de trouver sa longueur, nous devrons utiliser le théorème de Pythagore.
Notes:
OriginalL'auteur Vectasus
Arriver Matrice de Rotation dans MATLAB est très facile
par exemple,
OriginalL'auteur Sahil Kalra