直线和平面的交点
 
 
 
 
 
 
 
Prerequisite 高中解析立体几何,几何矢量
若平面上任意一点为 $ \boldsymbol{\mathbf{p}} = (p_x, p_y, p_z)$,法向量为 $ \boldsymbol{\mathbf{n}} = (n_x, n_y, n_z)$.直线上一点为 $ \boldsymbol{\mathbf{s}} = (s_x, s_y, s_z)$,方向为 $ \boldsymbol{\mathbf{v}} = (v_x, v_y, v_z)$,求射线与平面的交点.注意 $ \boldsymbol{\mathbf{n}} $ 和 $ \boldsymbol{\mathbf{v}} $ 不必是单位矢量.
平面方程为
\begin{equation}
( \boldsymbol{\mathbf{r}} - \boldsymbol{\mathbf{p}} ) \boldsymbol\cdot \boldsymbol{\mathbf{n}} = 0
\end{equation}
直线的参数方程为
\begin{equation}
\boldsymbol{\mathbf{r}} = \lambda \boldsymbol{\mathbf{v}} + \boldsymbol{\mathbf{s}}
\end{equation}
eq. 2 代入
eq. 1 解得
\begin{equation}
\lambda = \frac{( \boldsymbol{\mathbf{p}} - \boldsymbol{\mathbf{s}} ) \boldsymbol\cdot \boldsymbol{\mathbf{n}} }{ \boldsymbol{\mathbf{v}} \boldsymbol\cdot \boldsymbol{\mathbf{n}} }
\end{equation}
再代入
eq. 2 得交点为
\begin{equation}
\boldsymbol{\mathbf{r}} = \frac{( \boldsymbol{\mathbf{p}} - \boldsymbol{\mathbf{s}} ) \boldsymbol\cdot \boldsymbol{\mathbf{n}} }{ \boldsymbol{\mathbf{v}} \boldsymbol\cdot \boldsymbol{\mathbf{n}} } \boldsymbol{\mathbf{v}} + \boldsymbol{\mathbf{s}}
\end{equation}
(未完成:给出 Matlab 代码)