线面交点的三种情况：  

1. 没有交点；  

2. 有且只有一个交点；  

3. 有无数个交点。
在解析几何中, 一条直线与一个平面的交点可能是空集、一个点或一条直线。在计算机图形学、运动规划和碰撞检测中，经常需要分析相交类型，以及计算出点坐标或线的方程。

代数形式
----

空间中一个平面可以表示为点 \mathbf{p} 的集合

{\displaystyle (\mathbf {p} -\mathbf {p\_{0}} )\cdot \mathbf {n} =0}
其中 \mathbf{n} 是该平面的法线，{\displaystyle \mathbf {p\_{0}} }是平面上任意一点。（{\displaystyle \mathbf {a} \cdot \mathbf {b} }表示向量 \mathbf {a}  和 \mathbf {b}  的数量积）

而直线可表示为

{\displaystyle \mathbf {p} =d\mathbf {l} +\mathbf {l\_{0}} \quad d\in \mathbb {R} }
其中 {\displaystyle \mathbf {l} }是该直线的方向向量，{\displaystyle \mathbf {l\_{0}} }是直线上任意一点，d是实数范围内的标量。将直线方程代入平面方程得

{\displaystyle (d\mathbf {l} +\mathbf {l\_{0}} -\mathbf {p\_{0}} )\cdot \mathbf {n} =0}
展开得

{\displaystyle d\mathbf {l} \cdot \mathbf {n} +(\mathbf {l\_{0}} -\mathbf {p\_{0}} )\cdot \mathbf {n} =0}
解得 d

{\displaystyle d={(\mathbf {p\_{0}} -\mathbf {l\_{0}} )\cdot \mathbf {n} \over \mathbf {l} \cdot \mathbf {n} }.}
若 {\displaystyle \mathbf {l} \cdot \mathbf {n} =0}，则直线与平面平行。此时，如果({\displaystyle \mathbf {p\_{0}} -\mathbf {l\_{0}} )\cdot \mathbf {n} =0}，则该直线在平面内，即直线上所有的点都是交点。否则，直线与平面没有交点。

若 {\displaystyle \mathbf {l} \cdot \mathbf {n} \neq 0}，则直线与平面有且只有一个交点。解得 d，则交点的坐标为

{\displaystyle d\mathbf {l} +\mathbf {l\_{0}} }.

参数形式
----

直线与平面的交点
空间中一条直线可以用一个点和一个给定的方向来描述。则一条直线可以表示为如下点的集合

{\displaystyle \mathbf {l} \_{a}+(\mathbf {l} \_{b}-\mathbf {l} \_{a})t,\quad t\in \mathbb {R} }
其中 {\displaystyle \mathbf {l} \_{a}=(x\_{a},y\_{a},z\_{a})} 和 {\displaystyle \mathbf {l} \_{b}=(x\_{b},y\_{b},z\_{b})} 是直线上两个不同的点。

相似地，一个平面可以表示为如下点的集合

{\displaystyle \mathbf {p} \_{0}+(\mathbf {p} \_{1}-\mathbf {p} \_{0})u+(\mathbf {p} \_{2}-\mathbf {p} \_{0})v,\quad u,v\in \mathbb {R} }
其中 {\displaystyle \mathbf {p} \_{k}=(x\_{k},y\_{k},z\_{k})}，{\displaystyle k=0,1,2} 是平面上不共线的三个点。

直线和平面的交点可以表示为将直线上的点代入平面方程内，则参数方程如下：

{\displaystyle \mathbf {l} \_{a}+(\mathbf {l} \_{b}-\mathbf {l} \_{a})t=\mathbf {p} \_{0}+(\mathbf {p} \_{1}-\mathbf {p} \_{0})u+(\mathbf {p} \_{2}-\mathbf {p} \_{0})v}
即

{\displaystyle \mathbf {l} \_{a}-\mathbf {p} \_{0}=(\mathbf {l} \_{a}-\mathbf {l} \_{b})t+(\mathbf {p} \_{1}-\mathbf {p} \_{0})u+(\mathbf {p} \_{2}-\mathbf {p} \_{0})v,}
用矩阵表示为

{\displaystyle {\begin{bmatrix}x\_{a}-x\_{0}\\y\_{a}-y\_{0}\\z\_{a}-z\_{0}\end{bmatrix}}={\begin{bmatrix}x\_{a}-x\_{b}&x\_{1}-x\_{0}&x\_{2}-x\_{0}\\y\_{a}-y\_{b}&y\_{1}-y\_{0}&y\_{2}-y\_{0}\\z\_{a}-z\_{b}&z\_{1}-z\_{0}&z\_{2}-z\_{0}\end{bmatrix}}{\begin{bmatrix}t\\u\\v\end{bmatrix}}}
可得点的坐标为

{\displaystyle \mathbf {l} \_{a}+(\mathbf {l} \_{b}-\mathbf {l} \_{a})t}
若直线与平面平行或在平面内，那么向量 {\displaystyle \mathbf {l} \_{b}-\mathbf {l} \_{a}}，{\displaystyle \mathbf {p} \_{1}-\mathbf {p} \_{0}} 及 {\displaystyle \mathbf {p} \_{2}-\mathbf {p} \_{0}}是线性独立的，且矩阵为奇异矩阵。

若满足 t\in [0,1]，则交点在直线上 {\displaystyle \mathbf {l} \_{a}} 与 {\displaystyle \mathbf {l} \_{b}} 之间。

若满足

{\displaystyle u,v\in [0,1],\;\;\;(u+v)\leq 1,}
则交点位于平面上 {\mathbf {p}}\_{0}，{\displaystyle \mathbf {p} \_{1}} 及 {\displaystyle \mathbf {p} \_{2}}所构成的三角形中。

该问题可用矩阵的形式表示解答：

{\displaystyle {\begin{bmatrix}t\\u\\v\end{bmatrix}}={\begin{bmatrix}x\_{a}-x\_{b}&x\_{1}-x\_{0}&x\_{2}-x\_{0}\\y\_{a}-y\_{b}&y\_{1}-y\_{0}&y\_{2}-y\_{0}\\z\_{a}-z\_{b}&z\_{1}-z\_{0}&z\_{2}-z\_{0}\end{bmatrix}}^{-1}{\begin{bmatrix}x\_{a}-x\_{0}\\y\_{a}-y\_{0}\\z\_{a}-z\_{0}\end{bmatrix}}.}

应用
--

在计算机图形学中的光线追踪算法中，一个面可以被表示为几个平面的集合。一个面的图像可以用光线与每个面的交点表达。在基于视觉的三维重建中（计算机视觉的一个子场），深度通常是由"三角测量法"测算的。

外部链接
----

* Intersections of Lines, Segments and Planes (2D & 3D) from GeomAlgorithms.com （页面存档备份，存于）