如何找到2个3D向量之间的3个欧拉角?
当我有一个Vector且想要旋转时,通常可以使用此链接:Calculate rotations to look at a 3D point?

但是,当根据彼此进行计算时,我该怎么做呢?

最佳答案

正如其他人已经指出的那样,您的问题应予以修改。让我们将向量称为ab。我假设使用length(a)==length(b) > 0,否则我将无法回答问题。

计算向量的cross productv = a x b给出旋转的。通过计算dot product,您可以得到角的余弦,应使用v旋转,使用cos(angle)=dot(a,b)/(length(a)length(b))可以唯一地确定角度(@Archie,感谢您指出我之前的错误)。此时,您的旋转角度为轴表示

剩下的工作是将这种表示形式转换为您要寻找的表示形式:欧拉角。正如您所发现的,Conversion Axis-Angle to Euler是一种实现方法。当使用acos时,即角度为0或180度时,您必须处理退化的情况。

我个人不喜欢Euler角度,它们破坏了应用程序的稳定性,并且不适合插值,另请参见

  • Strange behavior with android orientation sensor
  • Interpolating between rotation matrices
  • 关于math - 两个3d向量之间的欧拉角,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15101103/

    10-12 00:27
    查看更多