コード例 #1
0
// set random
//
void	quaternion_set_random(struct quaternion *quat)
{
    quat->w = (ranrot_rand() & 1023) - 512.0;  // -512 to +512;
    quat->x = (ranrot_rand() & 1023) - 512.0;  // -512 to +512
    quat->y = (ranrot_rand() & 1023) - 512.0;  // -512 to +512
    quat->z = (ranrot_rand() & 1023) - 512.0;  // -512 to +512
	quaternion_normalise(quat);
}
コード例 #2
0
void quaternion_from_axisangle(vector4d *q, vector3d *axis, double angle) {
  double sin_a_2 = sin(angle / 2);
  double cos_a_2 = cos(angle / 2);
  q->x = axis->x * sin_a_2;
  q->y = axis->y * sin_a_2;
  q->z = axis->z * sin_a_2;
  q->w = cos_a_2;
  quaternion_normalise(q);
}