2D回転行列があると仮定します:
cos(t) -sin(t) 0
sin(t) cos(t) 0
0 0 1
正しい回転角度を取得するにはどうすればよいですか?
最初の要素で acos を使用すると、0 から pi の間の値のみが得られます。t
問題は、が 0 より小さい場合にどうするかです(もちろん、t はわかりません ;) )?
ほとんどの C ファミリ プログラミング言語の関数atan2()
は、y と x の両方の値を取り、両方の項の符号を考慮して、正しい完全な円の角度を計算して、それらの間の比率のアークタンジェントを計算します。
atan2( sin(t), cos(t) )
(おおよそ)t
範囲 (-pi,+pi] で返されます。
整数t
の解 ( ) を満たすことができる は無数にあります。を使用すると、0 と pi の間の結果が得られますが、さらにチェックすると、回転が時計回りか反時計回りかを把握できます。t + 2*pi()*n
n
acos(cos(t))
asin(sin(t))