从 2D 变换矩阵中获取旋转信息

3
假设我有一个二维旋转矩阵:
cos(t) -sin(t) 0
sin(t)  cos(t) 0
  0       0    1

如何获取正确的旋转角度?

如果您在第一个元素上使用acos,您只会得到介于0和pi之间的值。问题是,如果t小于0怎么办(当然我不知道t是多少;))?


这个问题不应该在StackExchange的数学网站上吗? - Sidharth Mudgal
2个回答

3

大多数C家族编程语言中的函数atan2()接受y和x值,并计算它们之间比率的反正切,考虑两个术语的符号以给出正确的全圆角度。

atan2( sin(t), cos(t) )在范围(-pi,+pi]内返回(近似)t


1

有无限多个t可以满足整数n的解(t + 2*pi()*n)。如果您使用acos(cos(t)),您将得到0到pi之间的结果,但如果您还检查asin(sin(t)),您将能够确定旋转是顺时针还是逆时针。


你能更精确一些吗?如果(asin(sin(t)) < 0),那么degree = -acos(cos(t))。 - user765269
1
假设t为-0.53。请记住cos(t) = cos(-t),因此如果您使用acos(cos(t)),您将得到0.53。但是如果您还检查asin(sin(t)),它将返回-0.53。负号告诉您旋转的方向。如果t为0.53,则acos(cos(t))和asin(sin(t))都将返回0.53。 - acs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接