Ray 2 лет назад
Родитель
Сommit
fdc28fce80
2 измененных файлов с 7 добавлено и 5 удалено
  1. 5 2
      examples/others/raymath_vector_angle.c
  2. 2 3
      src/raymath.h

+ 5 - 2
examples/others/raymath_vector_angle.c

@@ -49,7 +49,7 @@ int main(void)
             // Calculate angle between two vectors, considering a common origin (v0)
             v1 = Vector2Add(v0, (Vector2){ 100.0f, 80.0f });
             v2 = GetMousePosition();
-            angle = 90 - Vector2LineAngle(v0, v2)*RAD2DEG;
+            angle = Vector2Angle(Vector2Normalize(Vector2Subtract(v1, v0)), Vector2Normalize(Vector2Subtract(v2, v0)))*RAD2DEG;
         }
         else if (angleMode == 1)
         {
@@ -77,7 +77,10 @@ int main(void)
                 DrawLineEx(v0, v1, 2.0f, BLACK);
                 DrawLineEx(v0, v2, 2.0f, RED);
                 
-                DrawCircleSector(v0, 40.0f, 90 - Vector2LineAngle(v0, v1)*RAD2DEG, angle, 32, Fade(GREEN, 0.6f));
+                float startangle = 90 - Vector2LineAngle(v0, v1)*RAD2DEG;
+                DrawCircleSector(v0, 40.0f, startangle, angle + startangle, 32, Fade(GREEN, 0.6f));
+                
+                //DrawCircleSector(v0, 40.0f, 90 - Vector2LineAngle(v0, v1)*RAD2DEG, angle, 32, Fade(GREEN, 0.6f));
             }
             else if (angleMode == 1)
             {

+ 2 - 3
src/raymath.h

@@ -316,16 +316,15 @@ RMAPI float Vector2Angle(Vector2 v1, Vector2 v2)
 {
     float result = 0.0f;
     
-    float dot = v1.x*v2.x + v1.y*v2.y;      // Dot product
+    float dot = v1.x*v2.x + v1.y*v2.y;              // Dot product
     float dotClamp = (dot < -1.0f)? -1.0f : dot;    // Clamp
     if (dotClamp > 1.0f) dotClamp = 1.0f;
-
     result = acosf(dotClamp);
 
     // Alternative implementation, more costly
     //float v1Length = sqrtf((v1.x*v1.x) + (v1.y*v1.y));
     //float v2Length = sqrtf((v2.x*v2.x) + (v2.y*v2.y));
-    //float result = -acosf((v1.x*v2.x + v1.y*v2.y)/(v1Length*v2Length));
+    //result = -acosf((v1.x*v2.x + v1.y*v2.y)/(v1Length*v2Length));
     
     return result;
 }