# Calculate point, given x, y, angle, and distance

Excuse my ignorance and use of incorrect terms, but...

I have x and y coordinates, and the angle that the entity is facing on a 2D plane. I want to find the correct point, say 5 units in front of the point I have.

Examples:

If my entity is at 0, 0 and is facing east (0 degrees), my point would be 5, 0.

If my entity is at 0, 0 and is facing north (90 degrees), my point would be 0, 5.

If my entity is at 0, 0 and is facing north-east (45 degrees), my point would be ???.


I can't even figure it out in my head, let alone figure out the formula I need. I assume I need trigonometry, but I'm old and haven't used it since 1997.

• $x=5\cos\theta$, $y=5\sin\theta$. $\theta$ is the angle between the line of sight from the entity to the point and the positive $x$ axis. – David Mitra May 11 '12 at 16:17
• @DavidMitra Again, my ignorance, what am I doing wrong? I'm my browser's console to test it... 0 works 5*Math.cos(0)= 5, 5*.Math.sin(0)=0, but 90 does not 5*Math.cos(90) = -2.2403680806458506, 5*Math.sin(90) = 4.4699833180027895... I tried converting degrees to radians but that didn't help either. – Langdon May 11 '12 at 16:48
• When you converted to radians, what did you get? You should have obtained $90^\circ$ is $\pi/2$ radians. – David Mitra May 11 '12 at 17:04
• I did, I think I'm now having issues with not understand how JavaScript handles floats... 90 * Math.PI / 180 does give me 1.5707963267948966, as does Math.PI / 2, but when I say Math.cos(Math.PI / 2), I get 6.123233995736766e-17, which may very well be close to 1, but I don't know how to cast that into a usable integer now. =[ – Langdon May 11 '12 at 17:07
• Yes, the "e-17" and the end means "times $10^{-17}$, which in effect shifts the decimal point to the left 17 times, introducing zeroes (so it's $.0000000000000000612...$). $\cos(\pi/2)$ is exactly $0$. – David Mitra May 11 '12 at 17:10

## 1 Answer

In general, if $\theta$ is the angle between the line of sight from the entity to the point and the positive $x$ axis, then $$x=5\cos\theta,\quad\text{and}\quad y=5\sin\theta.$$ Here $\cos$ is the cosine function and $\sin$ is the sine function.

When calculating values of these, it is important to realize that the angle can be measured in various ways, the most common being degrees and radians. $360$ degrees is $2\pi$ radians. In general to convert $x$ degrees to radians, multiply $x$ by $\pi/180$.

You can use either measurement system for the angle, but when calculating $\sin$ and $\cos$ using a device, make sure you measure the angle as needed by that device.

In your example, with an angle of $45$ degrees, if you find $\sin(45^\circ)$ and $\cos(45^\circ)$ from a calculator, make sure the calculator is set to use degrees as the measure. Using Google's calculator (which by default uses radians), we must input $\sin(45\ \text{ degrees})$ and $\cos(45\ \text{ degrees})$. This returns

$$\sin(45^\circ)\approx.707\quad\text{and}\quad\cos(45^\circ)\approx.707.$$ Your point would then have $x$ coordinate

$\ \ \ \ \ x\approx5\cdot (0.707)=3.535$

and $y$-coordinate

$\ \ \ \ \ y\approx5\cdot( 0.707)=3.535$.

In radians, $45$ degrees is $45\cdot{\pi\over 180}={\pi\over 4}$ radians; and you could compute $\cos(\pi/4)$ and $\sin(\pi/4)$ using a device where angles are measured in radians. This of course will give approximately $.707$ in both cases as before.

• Why would I get sin(45) = 0.8509035245341184? I am executing this in actionscript 3. That is a significant difference and nowhere near .707. – IAbstract Nov 2 '16 at 13:58
• @IAbstract You need to specify degrees, I would guess. – David Mitra Nov 2 '16 at 14:18
• That is in degrees. You mean radians? Yes, when I converted to radians I received the same result as you: ~ .707 – IAbstract Nov 2 '16 at 14:35
• @IAbstract I mean your program interprets "sin(45)" as sin(45 radians). You want to type sin(45 degrees) or sin(pi/4). – David Mitra Nov 2 '16 at 14:39
• This formula doesn't work. I spent half a day debugging, and it's something I can definitely say. E.g. I'm trying to calculate an inertia angle, and when there's none, the car is moving (along $y$ axis) $speed * sin(0)$. Now, $sin(0) = 0$, so it's like car is not moving at all — but it clearly should! – Hi-Angel Jan 4 '18 at 21:11