本文整理汇总了C++中Matrix3d::y方法的典型用法代码示例。如果您正苦于以下问题:C++ Matrix3d::y方法的具体用法?C++ Matrix3d::y怎么用?C++ Matrix3d::y使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Matrix3d
的用法示例。
在下文中一共展示了Matrix3d::y方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: fromMatrix
void Angle::fromMatrix(const Matrix3d& matrix)
{
assert(matrix.x() == 3 && matrix.y() == 3);
double forward[3];
double left[3];
double up[3];
forward[0] = matrix[0][0];
forward[1] = matrix[1][0];
forward[2] = matrix[2][0];
left[0] = matrix[0][1];
left[1] = matrix[1][1];
left[2] = matrix[2][1];
up[2] = matrix[2][2];
double xyDist = sqrt(forward[0] * forward[0] + forward[1] * forward[1]);
if (xyDist > 0.0001)
{
(*this)[PITCH] = RAD2DEG( atan2( -forward[2], xyDist ) );
(*this)[YAW] = RAD2DEG( atan2( forward[1], forward[0] ) );
(*this)[ROLL] = RAD2DEG( atan2( left[2], up[2] ) );
}
else
{ // gimbal lock
(*this)[PITCH] = RAD2DEG( atan2( -forward[2], xyDist ) );
(*this)[YAW] = RAD2DEG( atan2( -left[0], left[1] ) );
(*this)[ROLL] = 0;
}
}