28 const double z_euler,
double qbn[4]) {
29 qbn[0] = sin(x_euler / 2.0) * sin(y_euler / 2.0) * sin(z_euler / 2.0) +
30 cos(x_euler / 2.0) * cos(y_euler / 2.0) * cos(z_euler / 2.0);
31 qbn[1] = cos(y_euler / 2.0) * cos(z_euler / 2.0) * sin(x_euler / 2.0) +
32 cos(x_euler / 2.0) * sin(y_euler / 2.0) * sin(z_euler / 2.0);
33 qbn[2] = cos(x_euler / 2.0) * cos(z_euler / 2.0) * sin(y_euler / 2.0) -
34 cos(y_euler / 2.0) * sin(x_euler / 2.0) * sin(z_euler / 2.0);
35 qbn[3] = cos(z_euler / 2.0) * sin(x_euler / 2.0) * sin(y_euler / 2.0) -
36 cos(x_euler / 2.0) * cos(y_euler / 2.0) * sin(z_euler / 2.0);
42 dcm[0][0] = quaternion[0] * quaternion[0] + quaternion[1] * quaternion[1] -
43 quaternion[2] * quaternion[2] - quaternion[3] * quaternion[3];
45 2 * (quaternion[1] * quaternion[2] - quaternion[0] * quaternion[3]);
47 2 * (quaternion[1] * quaternion[3] + quaternion[0] * quaternion[2]);
50 2 * (quaternion[1] * quaternion[2] + quaternion[0] * quaternion[3]);
51 dcm[1][1] = quaternion[0] * quaternion[0] - quaternion[1] * quaternion[1] +
52 quaternion[2] * quaternion[2] - quaternion[3] * quaternion[3];
54 2 * (quaternion[2] * quaternion[3] - quaternion[0] * quaternion[1]);
57 2 * (quaternion[1] * quaternion[3] - quaternion[0] * quaternion[2]);
59 2 * (quaternion[2] * quaternion[3] + quaternion[0] * quaternion[1]);
60 dcm[2][2] = quaternion[0] * quaternion[0] - quaternion[1] * quaternion[1] -
61 quaternion[2] * quaternion[2] + quaternion[3] * quaternion[3];