私は3x3の回転行列を持っています:
[ cos( angle ) sin( angle ) 0 ]
[ -sin( angle ) cos( angle ) 0 ]
[ 0 0 1 ]
どうすればうまくいきangle
ますか?
これを行うために現在使用している方法は次のとおりです。
void Mat3::SetAngle( const float angle ) {
m[ 0 + 0 * 3 ] = cos( angle );
m[ 1 + 0 * 3 ] = sin( angle );
m[ 0 + 1 * 3 ] = -sin( angle );
m[ 1 + 1 * 3 ] = cos( angle );
}
そして、それを取得するために私は使用しています:
float Mat3::GetAngle( void ) {
return atan2( m[ 1 + 0 * 3], m[ 0 + 0 * 3] );
}
私は次のようにテストしています:
Mat3 m;
m.SetAngle( 179.0f );
float a = m.GetAngle();
そして a は 3.0708115 になり、これは正しくありません。