View Full Version : Super simple angle help! =(

Awesomeness

Mar 28, 2009, 12:12 PM

Ok, I need to find the angle 'tween two points on a 2D plane. This would be the angle in comparison to vertical. For example,

This is 0 degrees

||

||

||

||

||

()

This is 45 degrees

||

|| //

|| //

|| //

||//

()

This is 90

||

||

||

||

||___________

()___________

Yeah, I'm working with Java. Could some one post the equation, the pseudo code, or Java code?

Thanks.

Catfish_Man

Mar 28, 2009, 12:21 PM

http://www.mathwords.com/s/sohcahtoa.htm

lee1210

Mar 28, 2009, 07:39 PM

I really hope this isn't homework. I made an inner class myPoint to demonstrate, i assume you already have a point class in place that you could use/extend:

public class testtrig {

public static void main(java.lang.String args[]) {

testtrig x = new testtrig();

myPoint p1 = x.new myPoint(1000.,1.);

myPoint p2 = x.new myPoint(0.,0.5);

System.out.println("The result for p1 and p2 is: " + p1.getAngleInDegreesWith(p2));

System.out.println("The result from origin of p1: " + p1.getAngleInDegreesWithOrigin());

}

public class myPoint {

double xCoor; //We'll let them default to protected, so we can act on other myPoints in methods

double yCoor;

myPoint(double x,double y) {

this.xCoor = x;

this.yCoor = y;

}

public double getX() { return xCoor;}

public double getY() { return yCoor;}

public double getSlopeWith(myPoint p) {

return (java.lang.Math.abs(p.xCoor - xCoor) / java.lang.Math.abs(p.yCoor - yCoor));

}

public double getAngleInDegreesWith(myPoint p) {

return java.lang.Math.toDegrees(java.lang.Math.atan(this.getSlopeWith(p)));

}

public double getSlopeWithOrigin() {

return xCoor/yCoor;

}

public double getAngleInDegreesWithOrigin() {

return java.lang.Math.toDegrees(java.lang.Math.atan(this.getSlopeWithOrigin()));

}

}

}

It isn't the most beautiful or best documented, but it should get you the angle in degrees. I didn't do any I/O, the main class is just to demonstrate the use of some of the functions. You would want to add error checking that the slope wasn't infinity/undefined, etc.

-Lee

Edit: I was guessing at which angle you wanted, exactly... i figured that if you were working with the origin and some point with positive x and y value the angle you'd want would be the one between the x-axis and the line segment between the two points. If that isn't what you want, it should be easy to adjust... it's all a little trig. I didn't want to calculate the line segment length for use, that's why i went with tangent. Someone might need to check my logic for negative x and y values. It's saturday.

Awesomeness

Mar 28, 2009, 08:20 PM

No, it's not homework. Thanks!