summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRay <[email protected]>2023-07-04 16:58:43 +0200
committerRay <[email protected]>2023-07-04 16:58:43 +0200
commit225b4fb3e2503d97a53d3aa746ddac3648cfebd8 (patch)
tree571160271eede2367cc55dfb0017d9632314a94e
parentdd2d64e05804e749d470a9d252cea48b8b1d7e17 (diff)
downloadraylib-225b4fb3e2503d97a53d3aa746ddac3648cfebd8.tar.gz
raylib-225b4fb3e2503d97a53d3aa746ddac3648cfebd8.zip
REVIEWED: `Vector2Angle()`
-rw-r--r--examples/others/raymath_vector_angle.c4
-rw-r--r--src/raymath.h12
2 files changed, 4 insertions, 12 deletions
diff --git a/examples/others/raymath_vector_angle.c b/examples/others/raymath_vector_angle.c
index 5de6116f..b193648f 100644
--- a/examples/others/raymath_vector_angle.c
+++ b/examples/others/raymath_vector_angle.c
@@ -78,9 +78,7 @@ int main(void)
DrawLineEx(v0, v2, 2.0f, RED);
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));
+ DrawCircleSector(v0, 40.0f, startangle, startangle + angle - 360.0f*(angle > 180.0f), 32, Fade(GREEN, 0.6f));
}
else if (angleMode == 1)
{
diff --git a/src/raymath.h b/src/raymath.h
index 087410ef..d7ec1d25 100644
--- a/src/raymath.h
+++ b/src/raymath.h
@@ -316,15 +316,9 @@ RMAPI float Vector2Angle(Vector2 v1, Vector2 v2)
{
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));
- //result = -acosf((v1.x*v2.x + v1.y*v2.y)/(v1Length*v2Length));
+ float dot = v1.x*v2.x + v1.y*v2.y;
+ float det = v1.x*v2.y - v1.y*v2.x;
+ result = -atan2f(det, dot);
return result;
}