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.

  • $\begingroup$ And center of circle? And direction of travel? $\endgroup$ – André Nicolas Jul 26 '11 at 17:19
  • $\begingroup$ sorry yes, center of circle and direction of travel are known too $\endgroup$ – suds Jul 26 '11 at 17:21
  • $\begingroup$ Distance divided by radius is the angle travelled (in radians). $\endgroup$ – 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.

  • $\begingroup$ Fantastic, thanks André $\endgroup$ – suds Jul 26 '11 at 18:09
  • $\begingroup$ @suds: Hope that the long derivation wasn't annoying. I often tell people a little more than they may want to know. $\endgroup$ – 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) $$


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.