Browse Source

Continue quat

Miloslav Číž 4 years ago
parent
commit
e6cceff2a0
2 changed files with 14 additions and 39 deletions
  1. 8 4
      test_sdl.c
  2. 6 35
      tinyphysicsengine.h

+ 8 - 4
test_sdl.c

@@ -50,7 +50,11 @@ cubeModel.customTransformMatrix = &m;
  
 TPE_Vec4 quat, axis;
 
-TPE_setVec4(&axis,512,0,0,0);
+TPE_setVec4(&axis,512,512,-512,0);
+
+TPE_vec3Normalize(&axis);
+
+TPE_PRINTF_VEC4(axis);
 
   TPE_Unit frame = 0;
 
@@ -60,16 +64,16 @@ TPE_setVec4(&axis,512,0,0,0);
 
 TPE_rotationToQuaternion(axis,frame,&quat);
 TPE_quaternionToRotationMatrix(quat,m);
-/*
+
 S3L_logMat4(m);
 
-S3L_makeRotationMatrixZXY(40,0,0,&m);
+/*
+S3L_makeRotationMatrixZXY(128,0,0,&m);
 
 S3L_logMat4(m);
 
 break;
 */
-
     for (uint32_t i = 0; i < PIXELS_SIZE; ++i)
       pixels[i] = 0;
 

+ 6 - 35
tinyphysicsengine.h

@@ -314,35 +314,6 @@ TPE_Unit TPE_acos(TPE_Unit x)
   return TPE_asin(-1 * x) + TPE_FRACTIONS_PER_UNIT / 4;
 }
 
-TPE_Unit TPE_atan(TPE_Unit x)
-{ 
-  return TPE_asin(
-    (x * TPE_FRACTIONS_PER_UNIT) /
-    TPE_nonZero(
-      TPE_sqrt(TPE_FRACTIONS_PER_UNIT * TPE_FRACTIONS_PER_UNIT + x * x)));
-}
-
-TPE_Unit TPE_atan2(TPE_Unit x, TPE_Unit y)
-{
-  if (x == 0)
-  {
-    return (y > 0) ?
-      (TPE_FRACTIONS_PER_UNIT / 4) :
-      (TPE_FRACTIONS_PER_UNIT / -4);
-  }
-
-  TPE_Unit at = TPE_atan((y * TPE_FRACTIONS_PER_UNIT) / TPE_nonZero(x));
-
-  if (x > 0)
-    return at;
-  else
-  {
-    return at + 
-    ((y >= 0) ? (TPE_FRACTIONS_PER_UNIT / 2) : 
-     (TPE_FRACTIONS_PER_UNIT / -2));
-  }
-}
-
 void TPE_initBody(TPE_Body *body)
 {
   // TODO
@@ -542,19 +513,19 @@ static inline TPE_Unit TPE_vec3DotProduct(const TPE_Vec4 v1, const TPE_Vec4 v2)
     (v1.x * v2.x + v1.y * v2.y + v1.z * v2.z) / TPE_FRACTIONS_PER_UNIT;
 }
 
-void TPE_vec3Normalize(TPE_Vec4 v)
+void TPE_vec3Normalize(TPE_Vec4 *v)
 { 
-  TPE_Unit l = TPE_vec3Len(v);
+  TPE_Unit l = TPE_vec3Len(*v);
 
   if (l == 0)
   {
-    v.x = TPE_FRACTIONS_PER_UNIT;
+    v->x = TPE_FRACTIONS_PER_UNIT;
     return;
   }
 
-  v.x = (v.x * TPE_FRACTIONS_PER_UNIT) / l;
-  v.y = (v.y * TPE_FRACTIONS_PER_UNIT) / l;
-  v.z = (v.z * TPE_FRACTIONS_PER_UNIT) / l;
+  v->x = (v->x * TPE_FRACTIONS_PER_UNIT) / l;
+  v->y = (v->y * TPE_FRACTIONS_PER_UNIT) / l;
+  v->z = (v->z * TPE_FRACTIONS_PER_UNIT) / l;
 }
 
 void TPE_vec4Normalize(TPE_Vec4 v)