diff options
| author | raysan5 <raysan5@gmail.com> | 2016-05-31 20:08:36 +0200 |
|---|---|---|
| committer | raysan5 <raysan5@gmail.com> | 2016-05-31 20:08:36 +0200 |
| commit | 8f91ed81c58fd5cdbeda4db5478649bd677712da (patch) | |
| tree | e5dfd2e4784aff7630df89f392fd1498f1bfad7d /examples/oculus_glfw_sample/raymath.h | |
| parent | d17a0cee1aa53978387e68be58d901bffd1ac0a9 (diff) | |
| download | raylib-8f91ed81c58fd5cdbeda4db5478649bd677712da.tar.gz raylib-8f91ed81c58fd5cdbeda4db5478649bd677712da.zip | |
Updated Oculus sample to Oculus SDK 1.4
Still working on the sample but almost finished. Some rlgl internals
redesign required and it will be ready!
Diffstat (limited to 'examples/oculus_glfw_sample/raymath.h')
| -rw-r--r-- | examples/oculus_glfw_sample/raymath.h | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/examples/oculus_glfw_sample/raymath.h b/examples/oculus_glfw_sample/raymath.h index 52e92b50..2e055e9f 100644 --- a/examples/oculus_glfw_sample/raymath.h +++ b/examples/oculus_glfw_sample/raymath.h @@ -73,7 +73,7 @@ //---------------------------------------------------------------------------------- #if defined(RAYMATH_STANDALONE) - // Vector2 type + // Vector2 type typedef struct Vector2 { float x; float y; @@ -158,6 +158,7 @@ RMDEF void PrintMatrix(Matrix m); // Print matrix ut //------------------------------------------------------------------------------------ RMDEF float QuaternionLength(Quaternion quat); // Compute the length of a quaternion RMDEF void QuaternionNormalize(Quaternion *q); // Normalize provided quaternion +RMDEF void QuaternionInvert(Quaternion *quat); // Invert provided quaternion RMDEF Quaternion QuaternionMultiply(Quaternion q1, Quaternion q2); // Calculate two quaternion multiplication RMDEF Quaternion QuaternionSlerp(Quaternion q1, Quaternion q2, float slerp); // Calculates spherical linear interpolation between two quaternions RMDEF Quaternion QuaternionFromMatrix(Matrix matrix); // Returns a quaternion for a given rotation matrix @@ -908,6 +909,23 @@ RMDEF void QuaternionNormalize(Quaternion *q) q->w *= ilength; } +// Invert provided quaternion +RMDEF void QuaternionInvert(Quaternion *quat) +{ + float length = QuaternionLength(*quat); + float lengthSq = length*length; + + if (lengthSq != 0.0) + { + float i = 1.0f/lengthSq; + + quat->x *= -i; + quat->y *= -i; + quat->z *= -i; + quat->w *= i; + } +} + // Calculate two quaternion multiplication RMDEF Quaternion QuaternionMultiply(Quaternion q1, Quaternion q2) { |
