摘要
本文内容包括:
- 三维空间中射线与平面的表示方法,
- 三维空间中判断射线与平面是否相交。
文末参考链接的资料都不错,但总漏点东西,所以把它们说总结到了一起。
三维空间中射线的表示方法
射线可以用三个量来表示:射线的起始点、射线的方向向量以及射线的长度。
如图所示的射线的参数方程为:
P
(
t
)
=
P
0
′
+
t
u
⃗
P(t) = P_0^{'} + t \vec{u}
P(t)=P0′+tu
其中,
P
(
t
)
P(t)
P(t)为射线上的点,其所有可能的结果构成了整条射线;
P
0
′
P_0^{'}
P0′是射线的起点,
u
⃗
\vec{u}
u 为射线的方向向量,
t
t
t为射线的长度且
t
∈
[
0
,
∞
)
t∈[0,∞)
t∈[0,∞)
三维空间中平面的表示方法
平面可以用二个量来表示:平面上任一点,过该点的平面法向量。
如图所示的平面的参数方程为:
(
P
−
P
0
)
n
⃗
=
0
(P - P_0)\vec{n} = 0
(P−P0)n=0
其中,
P
P
P为变量,其所有可能的结果组成了这个平面;
P
0
P_0
P0为平面上已知的某一点,
n
⃗
\vec{n}
n为平面上过已知点
P
0
P_0
P0的法向量。
公式的物理意义为:
(
P
−
P
0
)
(P - P_0)
(P−P0)表示平面上的向量,其与平面法向量
n
⃗
\vec{n}
n总是垂直的,故它们之间的内积为0.
三维空间中射线与平面是否相交的判断方法
射线不同于直线,射线存在起始点和方向,它与平面存在3种情况:
- 射线与平面平行。这时候肯定不相交。
- 射线与平面不平行。但平面在射线负方向,这时候也不相交。
- 射线与平面不平行。且平面在射线正方向,这时候射线与平面相交。
下面分情况讨论。
n
⃗
u
⃗
=
0
\vec{n}\vec{u} = 0
nu=0时,表示射线与平面平行,这时候肯定不相交。
n
⃗
u
⃗
≠
0
\vec{n}\vec{u} \neq 0
nu=0时,表示射线与平面不平行,这时候射线所在的直线
与平面必定相交于一点,记该点为
P
(
t
)
P(t)
P(t),那么有:
(
P
0
−
P
(
t
)
)
n
⃗
=
0
(P_0 - P(t))\vec{n} = 0
(P0−P(t))n=0
带入射线参数方程
P
(
t
)
=
P
0
′
+
t
u
⃗
P(t) = P_0^{'} + t \vec{u}
P(t)=P0′+tu, 有
(
P
0
−
P
0
′
−
t
u
⃗
)
n
⃗
=
0
(P_0 - P_0^{'} - t \vec{u})\vec{n} = 0
(P0−P0′−tu)n=0
解之得
t
=
(
P
0
−
P
0
′
)
n
⃗
u
⃗
n
⃗
t = \frac{(P_0 - P_0^{'})\vec{n}}{\vec{u}\vec{n}}
t=un(P0−P0′)n注意,这里是向量点积,所以分子分母的
n
⃗
\vec{n}
n不能消掉。
所以我们可以求出射线所在的直线
与平面交点
P
(
t
)
=
P
0
′
+
t
u
⃗
=
P
0
′
+
(
P
0
−
P
0
′
)
n
⃗
u
⃗
n
⃗
u
⃗
P(t) = P_0^{'} + t \vec{u} = P_0^{'} + \frac{(P_0 - P_0^{'})\vec{n}}{\vec{u}\vec{n}} \vec{u}
P(t)=P0′+tu=P0′+un(P0−P0′)nu
那么如何判断射线是否与平面相交呢?
当
t
>
=
0
t >= 0
t>=0时,交点在射线正方向上,所以射线与平面相交,交点即为P(t);
当
t
<
0
t < 0
t<0时,交点在射线负方向上,所以射线与平面不相交,但射线所在的直线
与平面相交。
相关/参考链接
- 射线与平面相交判断 | 讲得我觉得最好的,但是没有讲分母为0为射线与平面平行的情况
- 射线与平面相交 | 讲了分母为零的情况
- 射线、平面的表示方式 | 讲得很简洁,但是有地方没讲清楚