skerit - 1 year ago 69

Javascript Question

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) - that would result in 90 degrees (as positive Y is down, negative Y is up)

(10,10) vs (10,15) would be 270 degrees.

How would I go about this?

Answer Source

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`

.