I'd like to know if there is a simpler way to calculate the angle between two points.

I'm currently using this method:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public static float angle(float x1, float y1, float x2, float y2) { float dx=x2-x1,dy=y2-y1, PI=(float)Math.PI; double angle=0.0f; if(dx==0) if(dy==0)angle=0; else if(dy>0)angle=PI/2; else angle=PI*3/2; else if(dy==0) if(dx>0)angle=0; else angle=PI; else if(dx<0)angle=Math.atan(dy/dx)+PI; else if(dy<0)angle=Math.atan(dy/dx)+(2*PI); else angle=Math.atan(dy/dx);
return (float)angle; } |

Seems like a awful alot for something simple as that.

I'd like the angle to be 0 at 3 o'clock, and moving clockwise it should be PI at 9 o'clock. Any ideas?