Browse Source

REVIEWED: `Vector2Angle()`

pull/2838/head
Ray 2 years ago
parent
commit
d7f7c94c4d
1 changed files with 15 additions and 7 deletions
  1. +15
    -7
      src/raymath.h

+ 15
- 7
src/raymath.h View File

@ -307,15 +307,23 @@ RMAPI float Vector2DistanceSqr(Vector2 v1, Vector2 v2)
}
// Calculate angle from two vectors
// Parameters need to be normalized
// NOTE: Parameters need to be normalized
// Current implementation should be aligned with glm::angle
RMAPI float Vector2Angle(Vector2 v1, Vector2 v2)
{
float dotProduct = v1.x*v2.x + v1.y*v2.y; // Dot product
float t = dotProduct < -1 ? -1 : dotProduct; // Clamp
if (t > 1) t = 1;
float result = acosf(t);
float result = 0.0f;
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));
return result;
}

||||||
x
 
000:0
Loading…
Cancel
Save