确定旋转矩阵从轴和角度
问题描述:
我一直在使用4×4矩阵的3D旋转的角度。我遇到了很多很棒的信息,但我对一个主题缺乏了解。我还没有理解如何确定轴的角度。确定旋转矩阵从轴和角度
如果我们看一下here,我们会发现从轴和角度描述旋转矩阵维基页面。我知道轴是这两个向量的叉积。例如:
Vector1: (1,0,0)
Vector2: (0,0,1)
axis = Cross(Vector1, Vector2)
但是,我不知道如何找到角度。如果有人有任何关于计算角度的专业技巧,我将不胜感激。
答
有一种公知的同一性两个向量的叉积链接到它们之间的角度:
theta
哪里是较小角度。然而,这可以在[0, 180]
的范围内,在该范围上反正弦函数是多值:锐角theta
就是这样的sin(theta) = sin(180 - theta)
,所以我们不能直接从这个公式中获得它。
我们可以使用点积代替:
反余弦函数为单值超过这个范围,所以我们可以用它!
dot = Dot(Vector1, Vector2)
cos = dot/(Len(Vector1) * Len(Vector2))
theta_radians = acos(cos)
theta_degrees = theta_radians * 180/PI
+0
谢谢你的帮助。我还有一篇文章可以帮助你。如果你有时间,可以在这里查看https://stackoverflow.com/questions/45986652/matrix-rotation-around-an-arbitrary-axis-bug –
这个[理解4x4同质变换矩阵](https://stackoverflow.com/a/28084380/2521214)可能会让你感兴趣。 – Spektre