aboutsummaryrefslogtreecommitdiff
path: root/examples/oculus_glfw_sample/raymath.h
diff options
context:
space:
mode:
authorraysan5 <raysan5@gmail.com>2016-05-31 20:08:36 +0200
committerraysan5 <raysan5@gmail.com>2016-05-31 20:08:36 +0200
commit8f91ed81c58fd5cdbeda4db5478649bd677712da (patch)
treee5dfd2e4784aff7630df89f392fd1498f1bfad7d /examples/oculus_glfw_sample/raymath.h
parentd17a0cee1aa53978387e68be58d901bffd1ac0a9 (diff)
downloadraylib-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.h20
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)
{