3
$\begingroup$

If given 2 lines $\alpha$ and $\beta$, that are created by

  1. 2 points: A and B
  2. 2 plane intersection

I want to find shortest distance between them.

$\left\{\begin{array}{c} P_1=x_1X+y_1Y+z_1Z+C=0 \\ P_2=x_2X+y_2Y+z_2Z+C=0\end{array}\right.$
$A=\left(x_3;y_3;z_3\right)$
$B=\left(x_4;y_4;z_4\right)$
$\alpha =n_1\times n_2=\left(\left|\begin{array}{cc} y_1 & z_1 \\ y_2 & z_2\end{array}\right|;-\left|\begin{array}{cc} x_1 & z_1 \\ x_2 & z_2\end{array}\right|;\left|\begin{array}{cc} x_1 & y_1 \\ x_2 & y_2\end{array}\right|\right)$
$\beta =$

From here I tried:

The question of "shortest distance" is only interesting in the skew case. Let's say $p_0$ and $p_1$ are points on the lines $L_0$ and $L_1$, respectively. Also $d_0$ and $d_1$ are the direction vectors of $L_0$ and $L_1$, respectively. The shortest distance is $(p_0 - p_1)$ * , in which * is dot product, and is the normalized cross product. The point on $L_0$ that is nearest to $L_1$ is $p_0 + d_0(((p_1 - p_0) * k) / (d_0 * k))$, in which $k$ is $d_1 \times d_0 \times d_1$.

Read more: http://wiki.answers.com/Q/If_the_shortest_distance_between_two_points_is_a_straight_line_what_is_the_shortest_distance_between_two_straight_lines#ixzz17fAWKFst

I tried, but failed.

  • 0
    Incidentally, the claim that shortest distance is "only interesting" in the skew case is an odd one. Of course you can define shortest distance between parallel lines, and this is still very useful in applications like e.g. collision detection.2016-05-03

3 Answers 3

8

Per this wikipedia article, if your lines are $\vec{X}=\vec{X_1}+t\vec{D_1}$ and $\vec{X}=\vec{X_2}+t\vec{D_2}$, the distance between them is $\left|\frac{\vec{D_1}\times\vec{D_2}}{|\vec{D_1}\times\vec{D_2}|}\cdot(\vec{X_1}-\vec{X_2})\right|.$

  • 7
    If $D_1=D_2$, the lines aren't skew.2015-07-15
2

Say you have two lines $\vec L_1 = \vec X_1 + t\vec D_1$ and $\vec L_2 = \vec X_2 + t\vec D_2$.

Start with $(\vec X_1 - \vec X_2)$, which is a skew (non-perpendicular) segment from one line to the other. The distance from $\vec L_1$ to $\vec L_2$ is the component of $(\vec X_1 - \vec X_2)$ that is perpendicular to the lines $\vec L_1$ and $\vec L_2$. We can find this direction by taking the cross product $(\vec L_1 \times \vec L_2)$. After normalizing by dividing by the norm $|\vec L_1 \times \vec L_2|$, take the dot product with $(\vec X_1 - \vec X_2)$ to find the length of the component.

The distance is therefore $ \left|\frac{\vec{D_1}\times\vec{D_2}}{|\vec{D_1}\times\vec{D_2}|}\cdot(\vec{X_1}-\vec{X_2})\right| = \frac{\left|(\vec{D_1}\times\vec{D_2})\cdot(\vec{X_1}-\vec{X_2})\right|}{|\vec{D_1}\times\vec{D_2}|}. $

1

This is the best (quickest and most intuitive) method I've found so far:

Quick method to find line of shortest distance for skew lines

The idea is to consider the vector linking the two lines ($r, s$) in their generic points and then force the perpendicularity with both lines. (Call the line of shortest distance $t$)

This solution allows us to quickly get three results: The equation of the line of shortest distance between the two skew lines; the intersection point between t and s; the intersection point between t and r.