36int _q2m(
double& S,
double& qw,
const double& r00,
const double& r10,
37 const double& r20,
const double& r01,
const double& r11,
38 const double& r21,
const double& r02,
const double& r12,
40 double tr = r00 + r11 + r22;
42 S = sqrt(tr + 1.0) * 2;
48 }
else if ((r00 > r11) & (r00 > r22)) {
49 S = sqrt(1.0 + r00 - r11 - r22) * 2;
55 }
else if (r11 > r22) {
56 S = sqrt(1.0 + r11 - r00 - r22) * 2;
62 S = sqrt(1.0 + r22 - r00 - r11) * 2;
72 const double& r11,
const double& r21,
const double& r31,
73 const double& r12,
const double& r22,
const double& r32,
74 const double& r13,
const double& r23,
const double& r33) {
77 int whichCase =
_q2m(S, qw, r11, r21, r31, r12, r22, r32, r13, r23, r33);
81 compute_dq_dR_w(dq_dR, S, r11, r21, r31, r12, r22, r32, r13, r23, r33);
84 compute_dq_dR_x(dq_dR, S, r11, r21, r31, r12, r22, r32, r13, r23, r33);
87 compute_dq_dR_y(dq_dR, S, r11, r21, r31, r12, r22, r32, r13, r23, r33);
90 compute_dq_dR_z(dq_dR, S, r11, r21, r31, r12, r22, r32, r13, r23, r33);
93 if (qw <= 0) dq_dR *= -1;
void compute_dq_dR_z(Eigen::Matrix< double, 3, 9 > &dq_dR_z, const double &qz, const double &r00, const double &r10, const double &r20, const double &r01, const double &r11, const double &r21, const double &r02, const double &r12, const double &r22)
void compute_dq_dR_x(Eigen::Matrix< double, 3, 9 > &dq_dR_x, const double &qx, const double &r00, const double &r10, const double &r20, const double &r01, const double &r11, const double &r21, const double &r02, const double &r12, const double &r22)
void compute_dq_dR_y(Eigen::Matrix< double, 3, 9 > &dq_dR_y, const double &qy, const double &r00, const double &r10, const double &r20, const double &r01, const double &r11, const double &r21, const double &r02, const double &r12, const double &r22)
void compute_dq_dR_w(Eigen::Matrix< double, 3, 9 > &dq_dR_w, const double &qw, const double &r00, const double &r10, const double &r20, const double &r01, const double &r11, const double &r21, const double &r02, const double &r12, const double &r22)
void compute_dq_dR(Eigen::Matrix< double, 3, 9, Eigen::ColMajor > &dq_dR, const double &r11, const double &r21, const double &r31, const double &r12, const double &r22, const double &r32, const double &r13, const double &r23, const double &r33)
int _q2m(double &S, double &qw, const double &r00, const double &r10, const double &r20, const double &r01, const double &r11, const double &r21, const double &r02, const double &r12, const double &r22)