24 2 * (quaternion[2] * quaternion[3] + quaternion[0] * quaternion[1]);
26 2 * (quaternion[1] * quaternion[3] - quaternion[0] * quaternion[2]);
27 double dcm22 = quaternion[0] * quaternion[0] - quaternion[1] * quaternion[1] -
28 quaternion[2] * quaternion[2] + quaternion[3] * quaternion[3];
30 2 * (quaternion[1] * quaternion[2] - quaternion[0] * quaternion[3]);
31 double dcm11 = quaternion[0] * quaternion[0] - quaternion[1] * quaternion[1] +
32 quaternion[2] * quaternion[2] - quaternion[3] * quaternion[3];
34 att[0] = std::asin(dcm21);
35 att[1] = std::atan2(-dcm20, dcm22);
36 att[2] = std::atan2(dcm01, dcm11);