Browse Source

Review last PR formatting to follow raylib standards

raysan5 5 years ago
parent
commit
ea832628c4
2 changed files with 58 additions and 52 deletions
  1. 1 1
      examples/Makefile
  2. 57 51
      src/raymath.h

+ 1 - 1
examples/Makefile

@@ -291,7 +291,7 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP)
     ifeq ($(PLATFORM_OS),LINUX)
     ifeq ($(PLATFORM_OS),LINUX)
         # Reset everything.
         # Reset everything.
         # Precedence: immediately local, installed version, raysan5 provided libs
         # Precedence: immediately local, installed version, raysan5 provided libs
-        LDFLAGS = -L. -L$(RAYLIB_INSTALL_PATH) -L$(RAYLIB_RELEASE_PATH)  -L$(RAYLIB_PATH)
+        LDFLAGS = -L. -L$(RAYLIB_INSTALL_PATH) -L$(RAYLIB_RELEASE_PATH) -L$(RAYLIB_PATH)
     endif
     endif
 endif
 endif
 
 

+ 57 - 51
src/raymath.h

@@ -78,8 +78,6 @@
     #define PI 3.14159265358979323846
     #define PI 3.14159265358979323846
 #endif
 #endif
 
 
-
-
 #ifndef DEG2RAD
 #ifndef DEG2RAD
     #define DEG2RAD (PI/180.0f)
     #define DEG2RAD (PI/180.0f)
 #endif
 #endif
@@ -880,6 +878,18 @@ RMDEF Matrix MatrixRotateXYZ(Vector3 ang)
     return result;
     return result;
 }
 }
 
 
+// Returns zyx-rotation matrix (angles in radians)
+// TODO: This solution is suboptimal, it should be possible to create this matrix in one go 
+// instead of using a 3 matrix multiplication
+RMDEF Matrix MatrixRotateZYX(Vector3 ang)
+{
+    Matrix result = MatrixRotateZ(ang.z);
+    result = MatrixMultiply(result, MatrixRotateY(ang.y));
+    result = MatrixMultiply(result, MatrixRotateX(ang.x));
+    
+    return result;
+}
+
 // Returns x-rotation matrix (angle in radians)
 // Returns x-rotation matrix (angle in radians)
 RMDEF Matrix MatrixRotateX(float angle)
 RMDEF Matrix MatrixRotateX(float angle)
 {
 {
@@ -928,8 +938,6 @@ RMDEF Matrix MatrixRotateZ(float angle)
     return result;
     return result;
 }
 }
 
 
-
-
 // Returns scaling matrix
 // Returns scaling matrix
 RMDEF Matrix MatrixScale(float x, float y, float z)
 RMDEF Matrix MatrixScale(float x, float y, float z)
 {
 {
@@ -967,17 +975,6 @@ RMDEF Matrix MatrixMultiply(Matrix left, Matrix right)
     return result;
     return result;
 }
 }
 
 
-// TODO suboptimal should be able to create this matrix in one go
-// this is an aditional 3 matrix multiplies!
-RMDEF Matrix MatrixRotateZYX(Vector3 v)
-{
-    Matrix result = MatrixRotateZ(v.z);
-    result = MatrixMultiply(result, MatrixRotateY(v.y));
-    result = MatrixMultiply(result, MatrixRotateX(v.x));
-    
-    return result;
-}
-
 // Returns perspective projection matrix
 // Returns perspective projection matrix
 RMDEF Matrix MatrixFrustum(double left, double right, double bottom, double top, double near, double far)
 RMDEF Matrix MatrixFrustum(double left, double right, double bottom, double top, double near, double far)
 {
 {
@@ -1312,53 +1309,62 @@ RMDEF Quaternion QuaternionFromVector3ToVector3(Vector3 from, Vector3 to)
 }
 }
 
 
 // Returns a quaternion for a given rotation matrix
 // Returns a quaternion for a given rotation matrix
-RMDEF Quaternion QuaternionFromMatrix(Matrix m)
-{
-    Quaternion q;
-    if ( m.m0 > m.m5 && m.m0 > m.m10 )  {
-        float s  = sqrt( 1.0 + m.m0 - m.m5 - m.m10 ) * 2;
-        q.x = 0.25 * s;
-        q.y = (m.m4 + m.m1 ) / s;
-        q.z = (m.m2 + m.m8 ) / s;
-        q.w = (m.m9 - m.m6 ) / s;
-    } else if ( m.m5 > m.m10 ) {
-        float s  = sqrt( 1.0 + m.m5 - m.m0 - m.m10 ) * 2;
-        q.x = (m.m4 + m.m1 ) / s;
-        q.y = 0.25 * s;
-        q.z = (m.m9 + m.m6 ) / s;
-        q.w = (m.m2 - m.m8 ) / s;
-    } else {
-        float s  = sqrt( 1.0 + m.m10 - m.m0 - m.m5 ) * 2;
-        q.x = (m.m2 + m.m8 ) / s;
-        q.y = (m.m9 + m.m6 ) / s;
-        q.z = 0.25 * s;
-        q.w = (m.m4 - m.m1 ) / s;
+RMDEF Quaternion QuaternionFromMatrix(Matrix mat)
+{
+    Quaternion result = { 0.0f };
+    
+    if ((mat.m0 > mat.m5) && (mat.m0 > mat.m10))
+    {
+        float s = sqrtf(1.0f + mat.m0 - mat.m5 - mat.m10)*2;
+        
+        result.x = 0.25f*s;
+        result.y = (mat.m4 + mat.m1)/s;
+        result.z = (mat.m2 + mat.m8)/s;
+        result.w = (mat.m9 - mat.m6)/s;
     } 
     } 
-    return q;
+    else if (mat.m5 > mat.m10)
+    {
+        float s = sqrtf(1.0f + mat.m5 - mat.m0 - mat.m10)*2;
+        result.x = (mat.m4 + mat.m1)/s;
+        result.y = 0.25f*s;
+        result.z = (mat.m9 + mat.m6)/s;
+        result.w = (mat.m2 - mat.m8)/s;
+    } 
+    else
+    {
+        float s  = sqrtf(1.0f + mat.m10 - mat.m0 - mat.m5)*2;
+        result.x = (mat.m2 + mat.m8)/s;
+        result.y = (mat.m9 + mat.m6)/s;
+        result.z = 0.25f*s;
+        result.w = (mat.m4 - mat.m1)/s;
+    }
+    
+    return result;
 }
 }
 
 
 // Returns a matrix for a given quaternion
 // Returns a matrix for a given quaternion
 RMDEF Matrix QuaternionToMatrix(Quaternion q)
 RMDEF Matrix QuaternionToMatrix(Quaternion q)
 {
 {
-    Matrix m = MatrixIdentity();
-    float a2=2*(q.x*q.x), b2=2*(q.y*q.y), c2=2*(q.z*q.z); //, d2=2*(q.w*q.w);
+    Matrix result = MatrixIdentity();
+    
+    float a2 = 2*(q.x*q.x), b2=2*(q.y*q.y), c2=2*(q.z*q.z); //, d2=2*(q.w*q.w);
     
     
-    float ab=2*(q.x*q.y), ac=2*(q.x*q.z), bc=2*(q.y*q.z);
-    float ad=2*(q.x*q.w), bd=2*(q.y*q.w), cd=2*(q.z*q.w);
+    float ab = 2*(q.x*q.y), ac=2*(q.x*q.z), bc=2*(q.y*q.z);
+    float ad = 2*(q.x*q.w), bd=2*(q.y*q.w), cd=2*(q.z*q.w);
 
 
-    m.m0  = 1 - b2 - c2;
-    m.m1  = ab - cd;
-    m.m2  = ac + bd;
+    result.m0 = 1 - b2 - c2;
+    result.m1 = ab - cd;
+    result.m2 = ac + bd;
     
     
-    m.m4  = ab + cd;
-    m.m5  = 1 - a2 - c2;
-    m.m6  = bc - ad;
+    result.m4 = ab + cd;
+    result.m5 = 1 - a2 - c2;
+    result.m6 = bc - ad;
     
     
-    m.m8  = ac - bd;
-    m.m9  = bc + ad;
-    m.m10 = 1 - a2 - b2;
+    result.m8 = ac - bd;
+    result.m9 = bc + ad;
+    result.m10 = 1 - a2 - b2;
 
 
-    return m;
+    return result;
 }
 }
 
 
 // Returns rotation quaternion for an angle and axis
 // Returns rotation quaternion for an angle and axis