úÎ9y7*      !"#$%&'() Safe-Inferred*+-./0#3-2-1 Euler angle rotation sequence   NoneM  Rotate a vector about the X axis)trunc $ rotateXyzAboutX (V3 0 1 0) (pi/2)V3 0.0 0.0 1.0)trunc $ rotateXyzAboutX (V3 0 0 1) (pi/2)V3 0.0 (-1.0) 0.0  Rotate a vector about the Y axis)trunc $ rotateXyzAboutY (V3 0 0 1) (pi/2)V3 1.0 0.0 0.0)trunc $ rotateXyzAboutY (V3 1 0 0) (pi/2)V3 0.0 0.0 (-1.0)  Rotate a vector about the Z axis)trunc $ rotateXyzAboutZ (V3 1 0 0) (pi/2)V3 0.0 1.0 0.0)trunc $ rotateXyzAboutZ (V3 0 1 0) (pi/2)V3 (-1.0) 0.0 0.0 "Convert quaternion to Euler angles0euler321OfQuat (Quaternion 1.0 (V3 0.0 0.0 0.0)).Euler {eYaw = 0.0, ePitch = -0.0, eRoll = 0.0}@euler321OfQuat (Quaternion (sqrt(2)/2) (V3 (sqrt(2)/2) 0.0 0.0))=Euler {eYaw = 0.0, ePitch = -0.0, eRoll = 1.5707963267948966}@euler321OfQuat (Quaternion (sqrt(2)/2) (V3 0.0 (sqrt(2)/2) 0.0))<Euler {eYaw = 0.0, ePitch = 1.5707963267948966, eRoll = 0.0}@euler321OfQuat (Quaternion (sqrt(2)/2) (V3 0.0 0.0 (sqrt(2)/2)))=Euler {eYaw = 1.5707963267948966, ePitch = -0.0, eRoll = 0.0}convert a DCM to a quaternion/quatOfDcm $ V3 (V3 1 0 0) (V3 0 1 0) (V3 0 0 1)Quaternion 1.0 (V3 0.0 0.0 0.0)2quatOfDcm $ V3 (V3 0 1 0) (V3 (-1) 0 0) (V3 0 0 1)=Quaternion 0.7071067811865476 (V3 0.0 0.0 0.7071067811865475)Glet s = sqrt(2)/2 in quatOfDcm $ V3 (V3 s s 0) (V3 (-s) s 0) (V3 0 0 1)=Quaternion 0.9238795325112867 (V3 0.0 0.0 0.3826834323650898)Convert DCM to euler angles3euler321OfDcm $ V3 (V3 1 0 0) (V3 0 1 0) (V3 0 0 1).Euler {eYaw = 0.0, ePitch = -0.0, eRoll = 0.0}6euler321OfDcm $ V3 (V3 0 1 0) (V3 (-1) 0 0) (V3 0 0 1)=Euler {eYaw = 1.5707963267948966, ePitch = -0.0, eRoll = 0.0}Klet s = sqrt(2)/2 in euler321OfDcm $ V3 (V3 s s 0) (V3 (-s) s 0) (V3 0 0 1)=Euler {eYaw = 0.7853981633974483, ePitch = -0.0, eRoll = 0.0}"Convert Euler angles to quaternionquatOfEuler321 (Euler 0 0 0)Quaternion 1.0 (V3 0.0 0.0 0.0)!quatOfEuler321 (Euler (pi/2) 0 0)=Quaternion 0.7071067811865476 (V3 0.0 0.0 0.7071067811865475)!quatOfEuler321 (Euler 0 (pi/2) 0)=Quaternion 0.7071067811865476 (V3 0.0 0.7071067811865475 0.0)!quatOfEuler321 (Euler 0 0 (pi/2))=Quaternion 0.7071067811865476 (V3 0.7071067811865475 0.0 0.0)convert a quaternion to a DCM+dcmOfQuat $ Quaternion 1.0 (V3 0.0 0.0 0.0)5V3 (V3 1.0 0.0 0.0) (V3 0.0 1.0 0.0) (V3 0.0 0.0 1.0)Ilet s = sqrt(2)/2 in fmap trunc $ dcmOfQuat $ Quaternion s (V3 0.0 0.0 s)8V3 (V3 0.0 1.0 0.0) (V3 (-1.0) 0.0 0.0) (V3 0.0 0.0 1.0)IdcmOfQuat $ Quaternion 0.9238795325112867 (V3 0.0 0.0 0.3826834323650898)tV3 (V3 0.7071067811865475 0.7071067811865476 0.0) (V3 (-0.7071067811865476) 0.7071067811865475 0.0) (V3 0.0 0.0 1.0)Convert DCM to euler angles9dcmOfEuler321 $ Euler {eYaw = 0.0, ePitch = 0, eRoll = 0}5V3 (V3 1.0 0.0 0.0) (V3 0.0 1.0 0.0) (V3 0.0 0.0 1.0)Gfmap trunc $ dcmOfEuler321 $ Euler {eYaw = pi/2, ePitch = 0, eRoll = 0}8V3 (V3 0.0 1.0 0.0) (V3 (-1.0) 0.0 0.0) (V3 0.0 0.0 1.0):dcmOfEuler321 $ Euler {eYaw = pi/4, ePitch = 0, eRoll = 0}tV3 (V3 0.7071067811865475 0.7071067811865476 0.0) (V3 (-0.7071067811865476) 0.7071067811865475 0.0) (V3 0.0 0.0 1.0)vec_b = R_a2b * vec_avec_a = R_a2b^T * vec_b>vec_b = q_a2b * vec_a * q_a2b^(-1) vec_b = R(q_a2b) * vec_a*   * None -./02468B !"#$%&'(+),-. !"#$%&'() "#$%&'!()  !"#$%&'(+),-./         !"#$%&''())*+,-./012spatial-math-0.2.1.0 SpatialMath SpatialMathTTypes linear-1.11.3 Linear.MatrixM33Linear.Quaternion Quaternion Linear.V3V3EulereYawePitcheRollrotateXyzAboutXrotateXyzAboutYrotateXyzAboutZeuler321OfQuat quatOfDcm quatOfDcmB2A euler321OfDcmquatOfEuler321 dcmOfQuat dcmOfEuler321 dcmOfQuatB2A rotVecByDcmrotVecByDcmB2A rotVecByQuatrotVecByQuatB2A rotVecByEulerrotVecByEulerB2ARotationcomposerotrot'toDcm transposeM33TRotunRV3TunVcrossorthonormalize normalize'quatMult $fRotationV3a$fRotationQuaterniona$fSerializeV3T