Path: SCPro/ProAttitude
% Rotate about a body axis to align a body vector with an inertial vector 1. Begin with an initial quaternion 2. Rotate about a body-frame axis to align a body-frame vector with an inertial target vector 3. Return the new quaternion -------------------------------------------------------------------------- Form: [q,rotAngle,sepAngle,angleRange,sepCon] = QAlignWithCon( q0, uBAxis, uBVec,... uITarget, u1B, u2I, minSep ) -------------------------------------------------------------------------- ------ Inputs ------ q0 (4,:) Beginning inertial to body quaternion uBAxis (3,1) Body-frame axis to rotate about uBVec (3,1) Body-frame vector to align uITarget (3,:) Inertial-frame vector to point at u1B (3,N) Vector u1 in body frame. Constraint is: acos( Dot(u1,u2) ) >= minSep u2I (3,:,N) Vector u2 in inertial frame. minSep (1,N) Keep angle between u1 and u2 greater than minSep. ------- Outputs ------- q (4,:) Resulting Inertial-to-Body quaternion after rotation rotAngle (1,:) Angle of rotation [rad] sepAngle (1,:) Separation angle between body vector and target [rad] angleRange (:,4) Range of valid rotation angles sepCon (1,N) Separation angle between u1 and u2 --------------------------------------------------------------------------
SCPro: ProAttitude/QRotateToAlignWithCon Common: CommonData/SwooshWatermark Common: General/CellToMat Common: General/MatToCell Common: General/Watermark Common: Graphics/Coordinates Common: Graphics/NewFig Common: Graphics/Plot2D Common: Graphics/PlotAngleRange Common: Graphics/PltStyle Common: Quaternion/QForm Common: Quaternion/QMult Common: Quaternion/QPose Common: Quaternion/QTForm Math: Geometry/AngleSepFromRotation Math: Geometry/FindValidAngleRange Math: Geometry/InsideAngleRange Math: Geometry/MergeAngleRange Math: Linear/Cross Math: Linear/Unit Math: Trigonometry/LinearSinCosToQuadCos Math: Trigonometry/SolveLinearSinCos
Back to the SCPro Module page