本文整理汇总了C++中Rotation::setRotationFromThreeAnglesThreeAxes方法的典型用法代码示例。如果您正苦于以下问题:C++ Rotation::setRotationFromThreeAnglesThreeAxes方法的具体用法?C++ Rotation::setRotationFromThreeAnglesThreeAxes怎么用?C++ Rotation::setRotationFromThreeAnglesThreeAxes使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Rotation
的用法示例。
在下文中一共展示了Rotation::setRotationFromThreeAnglesThreeAxes方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: testRotationThreeAxes
//-------------------------------------------------------------------
bool testRotationThreeAxes( const BodyOrSpaceType bodyOrSpace, const Real angle1, const CoordinateAxis& axis1, const Real angle2, const CoordinateAxis &axis2, const Real angle3, const CoordinateAxis &axis3 ) {
// Form rotation about specified axes
Rotation rotationSpecified( bodyOrSpace, angle1, axis1, angle2, axis2, angle3, axis3 );
// Form equivalent rotation by another means
Rotation AB( angle1, axis1 );
Rotation BC( angle2, axis2 );
Rotation CD( angle3, axis3 );
Rotation testRotation = (bodyOrSpace == BodyRotationSequence) ? AB * BC * CD : CD * BC * AB;
// Test to see if they are the same
bool test = rotationSpecified.areAllRotationElementsSameToMachinePrecision( testRotation );
// Do the inverse problem to back out the angles
const Vec3 testVec = rotationSpecified.convertThreeAxesRotationToThreeAngles( bodyOrSpace, axis1, axis2, axis3 );
const Real theta1 = testVec[0];
const Real theta2 = testVec[1];
const Real theta3 = testVec[2];
// Create a Rotation matrix with the backed-out angles and compare to the original Rotation matrix
testRotation.setRotationFromThreeAnglesThreeAxes( bodyOrSpace, theta1, axis1, theta2, axis2, theta3, axis3 );
test = test && rotationSpecified.areAllRotationElementsSameToMachinePrecision( testRotation );
// Conversion should produce same angles for for appropriate ranges of angle1 and angle2
if( axis1.areAllSameAxes(axis2,axis3) )
test = test && testInverseRotation1Angle( angle1+angle2+angle3, theta1+theta2+theta3 );
else if( axis1.isSameAxis(axis2) )
test = test && testInverseRotation2Angle( angle1+angle2, theta1+theta1, angle3,theta3 );
else if( axis2.isSameAxis(axis3) )
test = test && testInverseRotation2Angle( angle1,theta1, angle2+angle3, theta2+theta3 );
else if( axis1.isSameAxis(axis3) )
test = test && testInverseRotation3AngleTwoAxes( angle1,theta1, angle2,theta2, angle3,theta3 );
else
test = test && testInverseRotation3AngleThreeAxes( angle1,theta1, angle2,theta2, angle3,theta3 );
return test;
}