Calculating point around circumference of circle given distance travelled

It is the end of the day and my brain just can't cope anymore. Can anyone help with, what I hope, is a simple question?

Given a point on a circle ($x$, $y$ coordinates) how can I calculate the coordinates of another point at a given distance around the circumference of the circle? Known variables are the starting point, distance traveled and radius of the circle.

• And center of circle? And direction of travel? – André Nicolas Jul 26 '11 at 17:19
• sorry yes, center of circle and direction of travel are known too – suds Jul 26 '11 at 17:21
• Distance divided by radius is the angle travelled (in radians). – André Nicolas Jul 26 '11 at 17:24

Let the center of the circle be $(a,b)$. Drag the center to the origin. This procedure drags our given point $(x,y)$ to $(x-a,y-b)$.

For simplicity of notation, let $u=x-a$, $v=y-b$. Now we determine the angle that the positive $x$-axis has to be rotated through (counterclockwise) to hit the line from the origin to $(u,v)$. Call this angle $\theta$.

Then $\theta$ is the angle, say in the interval $(-\pi,\pi]$, whose cosine is $u/r$, and whose sine is $v/r$, where $r$ is the radius of the circle. (This was already known; it also happens to be $\sqrt{u^2+v^2}$.) So from now on we can take $\theta$ as known. But we have to be careful to take the signs of $u$ and $v$ into account when calculating $\theta$.

Let $D$ be the distance travelled. Assume that we are travelling counterclockwise. Then the angle of travel is (in radians) equal to $D/r$. Let $\phi$ be this angle. If we are travelling clockwise, just replace $\phi$ by $-\phi$. So from now on we can take $\phi$ as known.

After the travel, our angle is $\theta+\phi$. This means that we are at the point with coordinates

$$(r\cos(\theta+\phi), \: \: r\sin(\theta+\phi)).$$

Now transform back, by adding $(a,b)$ to the point. We obtain $$(a+r\cos(\theta+\phi),\:\: b+r\sin(\theta+\phi)).$$

All the components of this formula are known, so we can compute the answer.

Comment: Note that $$\cos(\theta+\phi)=\cos\theta\cos\phi-\sin\theta\sin\phi.$$ But we know that $r\cos\theta=u$ and $r\sin\theta=v$. Thus $$a+r\cos(\theta+\phi)=a+u\cos\phi-v\sin\phi.$$

Similarly, $$\sin(\theta+\phi)=\cos\theta\sin\phi+\sin\theta\cos\phi,$$ and therefore $$b+r\sin(\theta+\phi)=u\sin\phi+v\cos\phi.$$ Thus an alternate (and for many purposes simpler) version of the answer is $$(a+(x-a)\cos\phi-(y-b)\sin\phi,\:\: b+(x-a)\sin\phi+(y-b)\cos\phi),$$ where $\phi=D/r$.

We could also reach this by quoting the rotation formula. Recall that when we are rotating a point $(u,v)$ about the origin through an angle $\phi$, we multiply the vector by a certain matrix. You can think of this post as being, in particular, a derivation of the rotation formula.

• Fantastic, thanks André – suds Jul 26 '11 at 18:09
• @suds: Hope that the long derivation wasn't annoying. I often tell people a little more than they may want to know. – André Nicolas Jul 26 '11 at 18:12

Another way to derive this answer it to use complex coordinates. Lets assume the centre of the circle is in $c=a+b i$ and the initial point in $z_0=x_0+y_0$ which can be written as $$z_0=c+r e^{i\phi},$$ where $r$ is the radius of the circle and $\phi$ is the initial angle.

The angle over which you have travelled is equal to $\theta=d/r$ where $d$ is the distance travelled along the circle in counter clockwise direction. The new point $z_1=x_1+i y_1$ is then $$z_1= c+r e^{i(\phi+\theta)} = c + (z_0-c) e^{i\theta} = c + (z_0-c) e^{i d/r}$$ By writing everything back in Cartesian coordinates we find $$x_1 = \Re(z_1)= a + (x_0-a) \cos(d/r) - (y_0-b)\sin(d/r)$$ and $$y_1 = \Im(z_1)= b + (x_0-a) \sin(d/r) + (y_0-b)\cos(d/r)$$