新起点
线面交点
2020-07-11 20:46:38

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

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

其中 n {\displaystyle \mathbf {n} } 是该平面的法线, p 0 {\displaystyle \mathbf {p_{0}} } 是平面上任意一点。( a b {\displaystyle \mathbf {a} \cdot \mathbf {b} } 表示向量 a {\displaystyle \mathbf {a} } b {\displaystyle \mathbf {b} } 的数量积)

而直线可表示为

其中 l {\displaystyle \mathbf {l} } 是该直线的方向向量, l 0 {\displaystyle \mathbf {l_{0}} } 是直线上任意一点, d {\displaystyle d} 是实数范围内的标量。将直线方程代入平面方程得

展开得

解得 d {\displaystyle d}

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

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

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

其中 l a = ( x a , y a , z a ) {\displaystyle \mathbf {l} _{a}=(x_{a},y_{a},z_{a})} l b = ( x b , y b , z b ) {\displaystyle \mathbf {l} _{b}=(x_{b},y_{b},z_{b})} 是直线上两个不同的点。

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

其中 p k = ( x k , y k , z k ) {\displaystyle \mathbf {p} _{k}=(x_{k},y_{k},z_{k})} k = 0 , 1 , 2 {\displaystyle k=0,1,2} 是平面上不共线的三个点。

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

用矩阵表示为

可得点的坐标为

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

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

若满足

则交点位于平面上 p 0 {\displaystyle \mathbf {p} _{0}} p 1 {\displaystyle \mathbf {p} _{1}} p 2 {\displaystyle \mathbf {p} _{2}} 所构成的三角形中。

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

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

网站公告: