Пример #1
0
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);
}
Пример #2
0
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;
}