In analytic geometry, a line and a sphere can intersect in three ways:
Methods for distinguishing these cases, and determining the coordinates for the points in the latter cases, are useful in a number of circumstances. For example, it is a common calculation to perform during ray tracing.[1]
In vector notation, the equations are as follows:
Equation for a sphere
\left\Vertx-c\right\Vert2=r2
x
c
r
Equation for a line starting at
o
x=o+du
x
o
d
u
Searching for points that are on the line and on the sphere means combining the equations and solving for
d
Equations combined
\left\Verto+du-c\right\Vert2=r2\Leftrightarrow(o+du-c) ⋅ (o+du-c)=r2
Expanded and rearranged:
d2(u ⋅ u)+2d[u ⋅ (o-c)]+(o-c) ⋅ (o-c)-r2=0
The form of a quadratic formula is now observable. (This quadratic equation is an instance of Joachimsthal's equation.[2])
ad2+bd+c=0
where
a=u ⋅ u=\left\Vertu\right\Vert2
b=2[u ⋅ (o-c)]
c=(o-c) ⋅ (o-c)-r2=\left\Verto-c\right\Vert2-r2
Simplified
d=
-2[u ⋅ (o-c)]\pm\sqrt{(2[u ⋅ (o-c)])2-4\left\Vertu\right\Vert2(\left\Verto-c\right\Vert2-r2) | |
Note that in the specific case where
u
\left\Vertu\right\Vert2=1
\hat{u
u
\nabla=[\hat{u
d=-[\hat{u
\nabla<0
\nabla=0
\nabla>0