8
$\begingroup$

Given points $A$ and $C$ in the plane, how do I find the point $B$ on the line segment between $A$ and $C$ that is located at a distance $d$ from $A$?

Example: $$A = (0,3), \qquad C = (3,0), \qquad d=1$$

$\endgroup$
2
  • $\begingroup$ Definitely not algebraic geometry. Or multivariable calculus for that matter. $\endgroup$
    – anon
    Apr 19, 2012 at 21:21
  • $\begingroup$ Could you be more specific? On a side note, I need to implement this in code. $\endgroup$
    – Glimpse
    Apr 19, 2012 at 21:35

3 Answers 3

8
$\begingroup$

You could use a parametrization:

Given $A=(a_1, a_2)$ and $B=(b_1,b_2)$, the a parametrization of the line segment $AB$ from $A$ to $B$ is $$ \eqalign{ x(t) &= a_1 + (b_1-a_1)t\cr y(t) &= a_2 +(b_2-a_2)t }\ \ ;\ \ \ \ 0\le t\le1. $$

With this parametrization, $t_d\cdot100\%$ of the line segment is traced out as $t$ increases from $t=0$ to $t=t_d$.

So, if you want the coordinates of the point $C$ on the line segment whose distance from $A$ is $d$, first compute the ratio of $d$ to the length of $AB$ and set this equal to $t_d$: $$ t_d={d\over \sqrt{(a_1-b_1)^2+(a_2-b_2)^2 }}. $$

Then evaluate the coordinates of $C=(x_C,y_C)$ as $C=\bigl( x(t_d), y(t_d) \bigr)$.

That is, the coordinates of $C$ are $$ \eqalign { x_C&=a_1+{d(b_1-a_1)\over \sqrt{(a_1-b_1)^2+(a_2-b_2)^2 }}\cr y_C&=a_2+{d(b_2-a_2)\over \sqrt{(a_1-b_1)^2+(a_2-b_2)^2 }}.\cr } $$

$\endgroup$
5
$\begingroup$

The following is a very useful fact. The points in the interval from $(a,b)$ to $(c,d)$ are precisely the points $(x,y)$ such that $$x=(1-t)a+ tc,\qquad y=(1-t)b+td,\tag{$\ast$}$$ where $t$ ranges over the interval from $0$ to $1$. Moreover, this point $(x,y)$ divides the interval from $(a,b)$ to $(c,d)$ in the ratio $t:1-t$. To put it another way, the distance from $(a,b)$ to $(x,y)$ is $t$ times the distance from $(a,b)$ to $(c,d)$.

We will use $(\ast)$, with $(a,b)=(0,3)$ and $(c,d)=(3,0)$. The distance from $(0,3)$ to $(3,0)$ is $\sqrt{18}$, or more simply $3\sqrt{2}$. If $B$ is to be at distance $d$ from $A$, we want $t:1 =d:3\sqrt{2}$.

So $t=\dfrac{d}{3\sqrt{2}}$. Finally, use this value of $t$ in $(\ast)$ to find the coordinates $(x,y)$ of $B$.

$\endgroup$
1
$\begingroup$

The direction from $\rm A$ to $\rm C$ is parallel to the displacement $\rm \vec{w}=\overline{AC}$. Normalizing (dividing through by the magnitude of the displacement), the direction (as a unit vector) is exactly $$\rm \vec{v} = \frac{\vec{w}}{\|\vec{w}\|}.$$

Now if $\rm \vec{u}=\overline{AB}$ is parallel to $\rm \vec{v}$ and has magnitude $\rm d$, and $\rm \vec{B}=\vec{A}+\vec{u}$, then...


In your example, the displacement from A to C is $\rm \vec{C}-\vec{A}=(3,-3)$. Normalizing,

$$\rm \vec{v}=\frac{(3,-3)}{\sqrt{3^2+(-3)^2}}=\left(\frac{1}{\sqrt{2}},-\frac{1}{\sqrt{2}}\right).$$

Multiplying this by d and tacking it onto A, we have

$$\rm \vec{C}=\vec{A}+1\left(\frac{1}{\sqrt{2}},-\frac{1}{\sqrt{2}}\right)=\left(\frac{1}{\sqrt{2}},3-\frac{1}{\sqrt{2}}\right).$$

$\endgroup$
1
  • $\begingroup$ Ok, thank you very much. $\endgroup$
    – Glimpse
    Apr 19, 2012 at 21:53

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .