gvr_vec3f rotationMatrixToEulerAngles(gvr_mat4f &R)
{
float sy = (float) sqrt(R.m[0][0] * R.m[0][0] + R.m[1][0] * R.m[1][0] );
bool singular = sy < 1e-6; // If
float x, y, z;
if (!singular)
{
x = (float) atan2(R.m[2][1] , R.m[2][2]);
y = (float) atan2(-R.m[2][0], sy);
z = (float) atan2(R.m[1][0], R.m[0][0]);
}
else
{
x = (float) atan2(-R.m[1][2], R.m[1][1]);
y = (float) atan2(-R.m[2][0], sy);
z = 0;
}
gvr_vec3f i;
i.x = (float) (x * (180.0f / M_PI));
i.y = (float) (y * (180.0f / M_PI));
i.z = (float) (z * (180.0f / M_PI));
return i;
}
根据矩阵计算角度
最新推荐文章于 2024-08-26 20:00:00 发布