Line–sphere intersection

From Wikipedia, the free encyclopedia

The three possible line-sphere intersections: 1. No intersection. 2. Point intersection. 3. Two point intersection.
The three possible line-sphere intersections:
1. No intersection.
2. Point intersection.
3. Two point intersection.

In analytic geometry, a line and a sphere can intersect in three ways: no intersection at all, at exactly one point, or in two points. Methods for distinguishing these cases, and determining equations for the points in the latter cases, are useful in a number of circumstances. For example, this is a common calculation to perform during ray tracing.

In vector notation, the equations are as follows:

Equation for a sphere

\left\Vert \mathbf{x} - \mathbf{c} \right\Vert^2=r^2
  • \mathbf{c} - center point
  • r - radius

Equation for a line starting at (0,0,0)

\mathbf{x}=d\mathbf{l}
  • d - distance along line from starting point
  • \mathbf{l} - direction of line (a unit vector)

Solving for d:

Equations combined
\left\Vert d\mathbf{l}-\mathbf{c} \right\Vert^2=r^2
Expanded
d^2\mathbf{l}^2-2d(\mathbf{l}\cdot\mathbf{c})+\mathbf{c}^2=r^2
Rearranged
d^2\mathbf{l}^2-2d(\mathbf{l}\cdot\mathbf{c})+\mathbf{c}^2-r^2=0
Quadratic formula and simplified
d=\frac{(\mathbf{l}\cdot\mathbf{c}) \pm \sqrt{(\mathbf{l}\cdot\mathbf{c})^2-\mathbf{l}^2(\mathbf{c}^2-r^2)}}{\mathbf{l}^2}
Note that \mathbf{l} is a unit vector, and thus \mathbf{l}^2=1. Thus, we can simplify this further to
d=(\mathbf{l}\cdot\mathbf{c}) \pm \sqrt{(\mathbf{l}\cdot\mathbf{c})^2-\mathbf{c}^2+r^2}
  • If the value under the square-root ((\mathbf{l}\cdot\mathbf{c})^2-\mathbf{c}^2+r^2) is less than zero, then it is clear that no solutions exist, i.e. the line does not intersect the sphere (case 1).
  • If it is zero, then exactly one solution exists, i.e. the line just touches the sphere in one point (case 2).
  • If it is greater than zero, two solutions exist, and thus the line touches the sphere in two points (case 3).

[edit] See also