2012-09-30 112 views
3

假設我有一個二維旋轉矩陣旋轉:獲得從2D轉換矩陣

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

你如何獲取正確的旋轉角度?

如果你在第一個元素上使用acos,你只能得到0到pi之間的值。問題是如果t小於0(當然我不知道t;)),你會怎麼做?

+0

是不是這個問題在stackexchange應該在數學網站? –

回答

2

函數atan2()在大多數C語言編程語言中都採用y和x值,並計算它們之間比率的反正切值,同時考慮兩個項的符號以給出正確的全圓角。

atan2(sin(t), cos(t))收益(大約)t範圍(-pi,+ PI]。

1

有無限多的t可以滿足整數n的解決方案(t + 2*pi()*n)。如果您使用acos(cos(t)),您將得到0到pi之間的結果,但是如果您還檢查asin(sin(t)),您將能夠確定旋轉是順時針還是逆時針旋轉。

+0

你可以更精確的?'如果(ASIN(SIN (t))<0)那麼degree = -acos(cos(t))'? – user765269

+1

假設t是-0.53記住cos(t)= cos(-t),所以如果你使用acos(cos ))將得到0.53,但是如果你還檢查asin(sin(t)),它將返回-0.53,負號表示旋轉的方向,如果t是0.53, )和asin(sin(t))將返回0.53。 – acs