三维空间中判断射线与平面是否相交

摘要

本文内容包括:

  • 三维空间中射线与平面的表示方法,
  • 三维空间中判断射线与平面是否相交。

文末参考链接的资料都不错,但总漏点东西,所以把它们说总结到了一起。


三维空间中射线的表示方法

射线可以用三个量来表示:射线的起始点、射线的方向向量以及射线的长度。
三维空间中判断射线与平面是否相交
如图所示的射线的参数方程为:
P(t)=P0+tu P(t) = P_0^{'} + t \vec{u}
其中,P(t)P(t)为射线上的点,其所有可能的结果构成了整条射线;P0P_0^{'}是射线的起点,u\vec{u} 为射线的方向向量,tt为射线的长度且t[0,)t∈[0,∞)

三维空间中平面的表示方法

平面可以用二个量来表示:平面上任一点,过该点的平面法向量。
三维空间中判断射线与平面是否相交
如图所示的平面的参数方程为:
(P0P)n=0 (P_0 - P)\vec{n} = 0
其中,PP为变量,其所有可能的结果组成了这个平面;P0P_0为平面上已知的某一点,n\vec{n}为平面上过已知点P0P_0的法向量。
公式的物理意义为:(P0P)(P_0 - P)表示平面上的向量,其与平面法向量n\vec{n}总是垂直的,故它们之间的内积为0.

三维空间中射线与平面是否相交的判断方法

射线与平面存在3种情况:

  1. 射线与平面平行。这时候肯定不相交。
  2. 射线与平面不平行。但平面在射线负方向,这时候也不相交。
  3. 射线与平面不平行。且平面在射线正方向,这时候射线与平面相交。

下面分情况讨论。
nu=0\vec{n}\vec{u} = 0时,这时候肯定不相交。
nu0\vec{n}\vec{u} \neq 0时,射线与平面不平行,射线所在的直线与平面必定相交于一点,记该点为P(t)P(t),那么有:
(P0P(t))n=0 (P_0 - P(t))\vec{n} = 0
带入射线参数方程P(t)=P0+tuP(t) = P_0^{'} + t \vec{u}, 有
(P0P0+tu)n=0 (P_0 - P_0^{'} + t \vec{u})\vec{n} = 0
解之得
t=(P0P0)nunt = \frac{(P_0^{'} - P_0)\vec{n}}{\vec{u}\vec{n}}注意,这里是向量点积,所以分子分母的n\vec{n}不能消掉。
t>=0t >= 0时,交点在射线正方向上,所以射线与平面相交;
t<0t < 0时,交点在射线负方向上,所以射线与平面不相交。

相关/参考链接