假设我有一个2D旋转矩阵:
cos(t) -sin(t) 0
sin(t) cos(t) 0
0 0 1
如何检索正确的旋转角度?
如果在第一个元素上使用acos,则只能获得0到pi之间的值。问题是如果t
小于0(当然我不知道t),你会怎么做?)
答案 0 :(得分:2)
大多数C系列编程语言中的函数atan2()
同时获取ay和x值,并计算它们之间比率的反正切值,同时考虑两个项的符号以给出正确的全圆角。
atan2( sin(t), cos(t) )
返回(约)t
的范围(-pi,+ pi)。
答案 1 :(得分:1)
有无数个t
可以满足整数t + 2*pi()*n
的解(n
)。如果你使用acos(cos(t))
,你会得到0和pi之间的结果,但是如果你也检查asin(sin(t))
,你将能够确定旋转是顺时针还是逆时针。