aboutsummaryrefslogtreecommitdiff
path: root/src/raymath.h
diff options
context:
space:
mode:
authorJoshua Reisenauer <kd7tck@msn.com>2016-05-16 19:42:16 -0700
committerJoshua Reisenauer <kd7tck@msn.com>2016-05-16 19:42:16 -0700
commit706755d1464bd65623755c6c2b4df931a37e9eb5 (patch)
treeb69c4114981eaeaa8a51df0de8fcc0994abfcc0e /src/raymath.h
parent9799856ad4864b808cbfb40b0b4398fcdf61c1c2 (diff)
parente060944b34f11978392f5c24282c95781caae63e (diff)
downloadraylib-706755d1464bd65623755c6c2b4df931a37e9eb5.tar.gz
raylib-706755d1464bd65623755c6c2b4df931a37e9eb5.zip
Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop
Diffstat (limited to 'src/raymath.h')
-rw-r--r--src/raymath.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/raymath.h b/src/raymath.h
index 52e92b50..59d66e56 100644
--- a/src/raymath.h
+++ b/src/raymath.h
@@ -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)
{