我有一个3×3的旋转矩阵角度:查找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();
结果是3.0708115这是不正确的。
您正在使用哪种编程语言? – 2013-05-10 12:21:42
我正在使用C++语言。 – 2013-05-10 12:22:51
看起来像围绕z轴旋转......也正弦的迹象:)似乎互换。确保它是弧度。 – kineticfocus 2013-05-10 12:25:02