void quaternion_from_euler(vector4d *q, double rx, double ry, double rz) { vector3d vx = {1, 0, 0}, vy = {0, 1, 0}, vz = {0, 0, 1}; vector4d qx, qy, qz, qt; quaternion_from_axisangle(&qx, &vx, rx); quaternion_from_axisangle(&qy, &vy, ry); quaternion_from_axisangle(&qz, &vz, rz); quaternion_multiply(&qt, &qx, &qy); quaternion_multiply(q, &qt, &qz); }
quat Camera::getCameraRotation() { vec3 vx = vec3(1.f, 0, 0); vec3 vy = vec3(0, 1.f, 0); vec3 vz = vec3(0, 0, 1.f); quat q, qx, qy, qz, qterm; quaternion_from_axisangle(qx, vx, pitch_ ); quaternion_from_axisangle(qy, vy, heading_ ); quaternion_from_axisangle(qz, vz, roll_ ); q = qx * qy * qz; return q; }