Currently my 'ships' in my game move using an x, y, velocity and angle variable. I want to be able to point at 'something' with the angle vector - i.e. another ship.
Is there an algorithm to give me Angle from x1,y2,x2,y2?
Thanks.
/** Gets the angle of the vector given by (xp, yp)
*/
public static final double getAngleFromVector(double xp, double yp)
{
if ((xp!=0)&&(yp!=0))
{
//Calculate angle of vector
double angle=0;
if (xp!=0)
{
if ((xp>=0)&&(yp>=0))
angle=Math.atan(yp/xp);
if ((xp<0)&&(yp>=0))
angle=Math.PI-Math.atan(yp/-xp);
if ((xp<0)&&(yp<0))
angle=Math.PI+Math.atan(-yp/-xp);
if ((xp>=0)&&(yp<0))
angle=Math.PI*2-Math.atan(-yp/xp);
}
else
{
if (yp>=0)
angle=Math.PI/2;
else
angle=Math.PI+Math.PI/2;
}
return angle;
}
else
{
if (xp==0 && yp==0) return 0;
if (xp==0 && yp>0) return Math.PI*0.5;
if (xp==0 && yp<0) return -Math.PI*0.5;
if (yp==0 && xp>0) return 0;
else return Math.PI;
}
}
Doesn't Math.atan2() do all that for you in one call?
Cas :)
And to use that its;
getAngleFromVector( source.x-target.x, source.y-target.y)
?
Aaah excellent thanks.