mirror of
				https://github.com/raysan5/raylib.git
				synced 2025-10-26 12:27:01 +00:00 
			
		
		
		
	Reviewed vector2angle example
This commit is contained in:
		| @@ -49,7 +49,7 @@ int main(void) | |||||||
|             // Calculate angle between two vectors, considering a common origin (v0) |             // Calculate angle between two vectors, considering a common origin (v0) | ||||||
|             v1 = Vector2Add(v0, (Vector2){ 100.0f, 80.0f }); |             v1 = Vector2Add(v0, (Vector2){ 100.0f, 80.0f }); | ||||||
|             v2 = GetMousePosition(); |             v2 = GetMousePosition(); | ||||||
|             angle = 90 - Vector2LineAngle(v0, v2)*RAD2DEG; |             angle = Vector2Angle(Vector2Normalize(Vector2Subtract(v1, v0)), Vector2Normalize(Vector2Subtract(v2, v0)))*RAD2DEG; | ||||||
|         } |         } | ||||||
|         else if (angleMode == 1) |         else if (angleMode == 1) | ||||||
|         { |         { | ||||||
| @@ -77,7 +77,10 @@ int main(void) | |||||||
|                 DrawLineEx(v0, v1, 2.0f, BLACK); |                 DrawLineEx(v0, v1, 2.0f, BLACK); | ||||||
|                 DrawLineEx(v0, v2, 2.0f, RED); |                 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) |             else if (angleMode == 1) | ||||||
|             { |             { | ||||||
|   | |||||||
| @@ -319,13 +319,12 @@ RMAPI float Vector2Angle(Vector2 v1, Vector2 v2) | |||||||
|     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 |     float dotClamp = (dot < -1.0f)? -1.0f : dot;    // Clamp | ||||||
|     if (dotClamp > 1.0f) dotClamp = 1.0f; |     if (dotClamp > 1.0f) dotClamp = 1.0f; | ||||||
|  |  | ||||||
|     result = acosf(dotClamp); |     result = acosf(dotClamp); | ||||||
|  |  | ||||||
|     // Alternative implementation, more costly |     // Alternative implementation, more costly | ||||||
|     //float v1Length = sqrtf((v1.x*v1.x) + (v1.y*v1.y)); |     //float v1Length = sqrtf((v1.x*v1.x) + (v1.y*v1.y)); | ||||||
|     //float v2Length = sqrtf((v2.x*v2.x) + (v2.y*v2.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; |     return result; | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Ray
					Ray