17 lines
348 B
C
17 lines
348 B
C
|
#include <math.h>
|
||
|
#include "vmath.h"
|
||
|
|
||
|
quat_t quat_rotate(quat_t q, float angle, float x, float y, float z)
|
||
|
{
|
||
|
quat_t rq;
|
||
|
float half_angle = angle * 0.5f;
|
||
|
float sin_half = (float)sin(half_angle);
|
||
|
|
||
|
rq.w = (float)cos(half_angle);
|
||
|
rq.x = x * sin_half;
|
||
|
rq.y = y * sin_half;
|
||
|
rq.z = z * sin_half;
|
||
|
|
||
|
return quat_mul(q, rq);
|
||
|
}
|