从2d变换矩阵获得旋转

时间:2012-09-30 00:36:37

标签: matrix rotation

假设我有一个2D旋转矩阵:

cos(t) -sin(t) 0
sin(t)  cos(t) 0
  0       0    1

如何检索正确的旋转角度?

如果在第一个元素上使用acos,则只能获得0到pi之间的值。问题是如果t小于0(当然我不知道t),你会怎么做?)

2 个答案:

答案 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)),你将能够确定旋转是顺时针还是逆时针。