2017-08-29 170 views
0

我一直在使用4×4矩阵的3D旋转的角度。我遇到了很多很棒的信息,但我对一个主题缺乏了解。我还没有理解如何确定轴的角度。确定旋转矩阵从轴和角度

如果我们看一下here,我们会发现从轴和角度描述旋转矩阵维基页面。我知道轴是这两个向量的叉积。例如:

Vector1: (1,0,0) 
Vector2: (0,0,1) 

axis = Cross(Vector1, Vector2) 

但是,我不知道如何找到角度。如果有人有任何关于计算角度的专业技巧,我将不胜感激。

+0

这个[理解4x4同质变换矩阵](https://stackoverflow.com/a/28084380/2521214)可能会让你感兴趣。 – Spektre

回答

2

有一种公知的同一性两个向量的叉积链接到它们之间的角度:

enter image description here

theta哪里是较小角度。然而,这可以在[0, 180]的范围内,在该范围上反正弦函数是多值:锐角theta就是这样的sin(theta) = sin(180 - theta),所以我们不能直接从这个公式中获得它。

我们可以使用点积代替:

enter image description here

反余弦函数单值超过这个范围,所以我们可以用它!

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 –