Skip to content Skip to sidebar Skip to footer

Calculating Degrees Between 2 Points With Inverse Y Axis

I'm creating a simple 2D game in javascript/canvas. I need to figure out the angle of a certain object relative to my position. So: say I'm at (10,10) and the object is at (10,5) -

Solution 1:

Suppose you're at (a, b) and the object is at (c, d). Then the relative position of the object to you is (x, y) = (c - a, d - b).

Then you could use the Math.atan2() function to get the angle in radians.

var theta = Math.atan2(-y, x);

note that the result is in the range [-π, π]. If you need nonnegative numbers, you have to add

if (theta < 0)
   theta += 2 * Math.PI;

and convert radians to degrees, multiply by 180 / Math.PI.

Solution 2:

If your coordinates are (xMe, yMe) and their coordinates are (xThem, yThem), then you can use the formula:

arctan((yMe-yThem)/(xThem-xMe))

Normally it'd be arctan((yThem-yMe)/(xThem-xMe)), but in this case the sign of the y-axis is reversed.

To convert the result from radians to degrees multiply by 180/pi.

So in JavaScript, this would look like: Math.atan((yThem-yMe)/(xThem-xMe))*180/Math.PI

atan gives a value between -pi/2 and pi/2 (that is, between -90 and 90 degrees). But you can look at what quadrant your (xThem - xMe, yMe - yThem) vector is in and adjust accordingly.

Solution 3:

In layman's terms:

functionpointDirection(x1, y1, x2, y2) {
    returnMath.atan2(y2 - y1, x2 - x1) * 180 / Math.PI;
}

Solution 4:

In HTML5 canvas the origin is the top left corner hence the y axis grows from top to bottom. So regardless of wherever you are on the unit circle to calculate the angle of point A to the center(C) you should in fact do like

angle = Math.atan2(Cy-Ay,Ax-Cx)

and you will get your result in the range of [-π, π].

I have no idea why they haven't made the canvas origin the bottom left corner.

Post a Comment for "Calculating Degrees Between 2 Points With Inverse Y Axis"