summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRay <[email protected]>2023-07-02 20:05:15 +0200
committerRay <[email protected]>2023-07-02 20:05:15 +0200
commitfdc28fce80d6e9ae04e900079beba7d79673b25d (patch)
tree19e099090be818dd258438c8dc62c8c9c14c6937
parente8af87575639d27fa5486ffe88458596d067c21a (diff)
downloadraylib-fdc28fce80d6e9ae04e900079beba7d79673b25d.tar.gz
raylib-fdc28fce80d6e9ae04e900079beba7d79673b25d.zip
Reviewed vector2angle example
-rw-r--r--examples/others/raymath_vector_angle.c7
-rw-r--r--src/raymath.h5
2 files changed, 7 insertions, 5 deletions
diff --git a/examples/others/raymath_vector_angle.c b/examples/others/raymath_vector_angle.c
index 457d69dc..5de6116f 100644
--- a/examples/others/raymath_vector_angle.c
+++ b/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)
{
diff --git a/src/raymath.h b/src/raymath.h
index 6a929cf6..087410ef 100644
--- a/src/raymath.h
+++ b/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;
}