你如何找到 2 个 3D 向量之间的 3 个欧拉角?
当我有一个 Vector 并且我想得到它的旋转时,通常可以使用这个链接:Calculate rotations to look at a 3D point?
但是在相互计算它们时我该怎么做呢?
最佳答案
正如其他人已经指出的那样,您的问题应该修改。让我们调用您的向量 a
和 b
.我假设 length(a)==length(b) > 0
否则我无法回答这个问题。
计算 cross product您的矢量 v = a x b
; v
给出 轴 的旋转。通过计算 dot product ,可以得到的余弦角度你应该用 cos(angle)=dot(a,b)/(length(a)length(b))
轮换,并与 acos
您可以唯一地确定角度(@Archie 感谢您指出我之前的错误)。此时您有 轴角表示你的轮换。
剩下的工作是将此表示转换为您正在寻找的表示:欧拉角。 Conversion Axis-Angle to Euler是一种方法,正如您所发现的那样。当v = [ 0, 0, 0]
时,您必须处理退化情况。 ,即当角度为 0 或 180 度时。
我个人不喜欢欧拉角,它们会破坏应用程序的稳定性,并且不适合插值,另见
关于math - 两个 3d 矢量之间的欧拉角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15101103/