两个3d矢量之间的欧拉角

tom*_*ake 7 math 3d geometry vector euler-angles

你如何找到2个3D矢量之间的3个欧拉角?当我有一个Vector并且我想获得它的旋转时,通常可以使用此链接:计算旋转以查看3D点?

但是如何按照彼此计算它们呢?

Ali*_*Ali 10

正如其他人已经指出的那样,你的问题应该修改.让我们称呼你的向量ab.我认为length(a)==length(b) > 0否则我无法回答这个问题.


计算向量的叉积v = a x b ; v给出旋转.通过计算点积,你可以得到你应该旋转的角度的余弦cos(angle)=dot(a,b)/(length(a)length(b)),并且acos你可以唯一地确定角度(@Archie感谢指出我之前的错误).此时,您具有旋转的轴角度表示.

剩下的工作是将此表示转换为您要查找的表示:欧拉角.转换Axis-Angle到Euler是一种方法,正如您所发现的那样.v = [ 0, 0, 0]当角度为0度或180度时,您必须处理退化情况.


我个人不喜欢欧拉角,他们搞砸了你的应用程序的稳定性,他们不适合插值,参见