我一直在使用4x4矩阵进行3D旋转。我遇到了很多很棒的信息,但我对一个主题缺乏了解。我还没有理解如何确定轴的角度。
如果我们看here,我们会找到一个描述旋转矩阵的维基页面,从轴和角度开始。我知道轴是两个向量的交叉积。例如:
Vector1: (1,0,0)
Vector2: (0,0,1)
axis = Cross(Vector1, Vector2)
然而,我不知道如何获得角度。如果有人有任何关于计算角度的专业技巧,我将不胜感激。
答案 0 :(得分:2)
有一个众所周知的身份将两个向量的交叉积与它们之间的角度联系起来:
其中theta
是较小的角度。但是,这可以在[0, 180]
范围内,反正弦函数多值:锐角theta
就是sin(theta) = sin(180 - theta)
,所以我们不能直接从这个公式中获得它。
我们可以使用 dot-product 代替:
反余弦函数在此范围内是单值,因此我们可以使用它!
dot = Dot(Vector1, Vector2)
cos = dot / (Len(Vector1) * Len(Vector2))
theta_radians = acos(cos)
theta_degrees = theta_radians * 180 / PI