angle in degree  from two mouseClick point

hello :),

I search how to obtain degree information from two location of point in my applet for ordinal direction for sprite .

I trie :

public class Angle {

int pointOneX = 100;        // ->
int pointOneY = 100;        // v

int pointTwoX = 90;        // ->
int pointTwoY = 58;        // v

double distanceX = 0;
double distanceY = 0;
double distance = 0;

public Angle() {
    
    calculDistance();
    calculAngle();
}

private void calculDistance() {
    
    distanceX = pointTwoX - pointOneX;
    distanceY = pointTwoY - pointOneY;
    
    distance = Math.sqrt(distanceX * distanceX + distanceY * distanceY);
    
}

private void calculAngle() {
    
    double startAngle = (int)Math.toDegrees(Math.asin(distanceY / distance));

        System.out.println(" startAngle : " + startAngle);
    
}
    
public static void main(String[] args) {
    
    new Angle();
}

}

but the result is not very helpfull.

have you a solution ? thank you very much

Ok, since I have spent endless hours on this, i know this by my heart.

atan2(deltay/dealtax)

(my example)
so you have the static position lets say the position of your character and then you take the mouseX cordinate - positionY and then divide it by mouseY-positionY and now you gots the polar angle information.

It works the same way with anything. Just remember atan2(change in x/ change in y)

I suggest using atan2 since atan1 is not good for this situation. It will “flip” on the negative axis.

ok and i trie this :

i don’ t compile with atan2:

int rotateAngle=(int)java.lang.Math.round(java.lang.Math.atan2(((double)(pointTwoX - pointOneY)) / ((double)(pointTwoY - pointOneY))));

because atan2 take two double in parameter .

with atan compile but the result is not my solution :

int rotateAngle=(int)java.lang.Math.round(java.lang.Math.atan(((double)(pointTwoX - pointOneY)) / ((double)(pointTwoY - pointOneY)))*180/java.lang.Math.PI);

you have the same example with atan2 ?
thank you very much

Ok sorry now i have my degree with your solution :

int rotateAngle=(int)java.lang.Math.round(java.lang.Math.atan2(((pointTwoX - pointOneY)) , ((pointTwoY - pointOneY)))*360/java.lang.Math.PI);

now i can test the angle for choose good animationStrip for my sprite !

my code is good or have you a more speed solution ?

Thank you captain. :wink:

Its quite fast. I don’t think you can optimize the math itself, the things that matter are where you use it and how. I haven’t really optimized it, but I think speed wise you should be quite okay even with that.