\( C \) = Sphere center
\( r \) = Sphere radius
\( P \) = Point on the surface of the sphere
\( L_{0} \) = Point on the line
\( \mathbf{v} \) = Vector that defines the line direction
Parametric equation of a point on the sphere
A generic point on the sphere satisfies the equation:
\[
\left\lVert P - C \right\rVert = r
\]
Both sides of the equation can be raised by the power of 2, to simplify the calculations.
\[
\left\lVert P - C \right\rVert^{2} = r^{2}
\]
Parametric equation of the line
A generic line defined by a point \( L_{0} \) and a direction vector \( \mathbf{v} \). It describes all the points along the line as a function of the parameter \( t \).
\[
L_{\left( t \right)} = L_{0} + t \mathbf{v}
\]
Intersections calculation
To calculate the intersection between sphere and line, substitute the generic point \( P \) on the sphere with a generic point on the line \( L_{ \left( t \right) } \).
\[
\left\lVert L_{0} + t \mathbf{v} - C \right\rVert^{2} = r^{2}
\]
Define a vector \( \mathbf{w} \) equal to the difference of \( L_{0} \) and \( C \):
\[
\mathbf{w} = L_{0} - C
\]
and substitute back.
\[
\left\lVert t \mathbf{v} + \mathbf{w} \right\rVert^{2} = r^{2}
\]
The length squared of a vector is equal to the dot product of the vector by itself.
\[
\left( t \mathbf{v} + \mathbf{w} \right) \cdot \left( t \mathbf{v} + \mathbf{w} \right) = r^{2}
\]
Expand the dot product.
\[
\left( \mathbf{v} \cdot \mathbf{v} \right) t^{2} + 2 \left( \mathbf{v} \cdot \mathbf{w} \right) t + \left( \mathbf{w} \cdot \mathbf{w} \right) = r^{2}
\]
Substitute the coefficients of \( t \) to obtain a simpler quadratic equation.
\[
\begin{cases}
a = \left( \mathbf{v} \cdot \mathbf{v} \right) \\
b = 2 \left( \mathbf{v} \cdot \mathbf{w} \right) \\
c = \left( \mathbf{w} \cdot \mathbf{w} \right) - r^{2}
\end{cases}
\]
Solve for \( t \).
\[ a t^{2} + b t + c = 0 \]
Intersection points
Depending on the values of the discriminant of the quadratic equation in \( t \) there can be two, one or no intersections:
- if \( \left( b^{2} - 4 a c \right) > 0 \)
The distance between the sphere center \( C \) and the line \( L_{ \left( t \right) } \) is smaller than the sphere radius \( r \). There are two intersections at:
\[
L_{int_{1,2}} = L_{0} + t_{1,2} \mathbf{v}
\qquad
t_{1,2} = \frac{ - b \pm \sqrt{ b^{2} - 4 a c } }{ 2 a }
\]
- if \( \left( b^{2} - 4 a c \right) = 0 \)
The distance between the sphere center \( C \) and the line \( L_{ \left( t \right) } \) is equal to the sphere radius \( r \). The line \( L_{ \left( t \right) } \) is tangent to the sphere. There is one intersection at:
\[
L_{int} = L_{0} + t \mathbf{v}
\qquad
t = \frac{ -b }{ 2 a }
\]
- if \( \left( b^{2} - 4 a c \right) < 0 \)
The distance between the sphere center \( C \) and the line \( L_{ \left( t \right) } \) is greater than the sphere radius \( r \). There are no intersections.