ベクトルと平面に関わる計算をご紹介します。

ベクトルの平面に垂直な成分

ベクトル\(\boldsymbol{v}\)において、平面\(ax+by+cz+d=0\)に垂直な成分のみを抽出したベクトル\(\boldsymbol{v}_\mathrm{v}\)を算出する。

vartical

公式

\[
\begin{split}
\boldsymbol{v}_\mathrm{v} &= \frac{\boldsymbol{v} \cdot \boldsymbol{n}}{\|\boldsymbol{n}\|^2}\boldsymbol{n}
\\ &= \frac{\boldsymbol{v} \cdot \boldsymbol{n}}{\boldsymbol{n} \cdot \boldsymbol{n}}\boldsymbol{n}
\\ &=
\frac{
\begin{pmatrix}
v_x \\ v_y \\ v_z
\end{pmatrix}
\cdot
\begin{pmatrix}
a \\ b \\ c
\end{pmatrix}
}
{
\begin{pmatrix}
a \\ b \\ c
\end{pmatrix}
\cdot
\begin{pmatrix}
a \\ b \\ c
\end{pmatrix}
}
\begin{pmatrix}
a \\ b \\ c
\end{pmatrix}
\\ &=
\frac{av_x + bv_y + cv_z}{a^2 + b^2 + c^2}
\begin{pmatrix}
a \\ b \\ c
\end{pmatrix}
\end{split}
\]

簡単な解説

方針:法線\(\boldsymbol{n}\)の単位ベクトルに対して長さ\(l\)のスカラー倍を行う。

\[
\begin{split}
l &= \|\boldsymbol{v}\| \cos{\theta}
\\ &=
\frac{\boldsymbol{v} \cdot \boldsymbol{n}}{\|\boldsymbol{n}\|}
\\ &(\because \boldsymbol{v} \cdot \boldsymbol{n} = \|\boldsymbol{v}\| \|\boldsymbol{n}\| \cos{\theta})
\\ \\
\boldsymbol{v}_\mathrm{v} &= l \frac{\boldsymbol{n}}{\|\boldsymbol{n}\|}
\\ &=
\frac{\boldsymbol{v} \cdot \boldsymbol{n}}{\|\boldsymbol{n}\|}
\frac{\boldsymbol{n}}{\|\boldsymbol{n}\|}
\\ &=
\frac{\boldsymbol{v} \cdot \boldsymbol{n}}{\|\boldsymbol{n}\|^2}\boldsymbol{n}
\end{split}
\]
vartical_exp

ベクトルの平面射影

ベクトル\(\boldsymbol{v}\)を平面\(ax+by+cz+d=0\)に射影したベクトル\(\boldsymbol{v}_\mathrm{h}\)を算出する。

horizon

公式

\[
\begin{split}
\boldsymbol{v}_\mathrm{h} &= \boldsymbol{v} - \boldsymbol{v}_\mathrm{v}
\\ &=
\boldsymbol{v} - \frac{\boldsymbol{v} \cdot \boldsymbol{n}}{\|\boldsymbol{n}\|^2}\boldsymbol{n}
\\ &=
\begin{pmatrix}
v_x \\ v_y \\ v_z
\end{pmatrix}
-
\frac{av_x + bv_y + cv_z}{a^2 + b^2 + c^2}
\begin{pmatrix}
a \\ b \\ c
\end{pmatrix}
\end{split}
\]

簡単な解説

ベクトル\(\boldsymbol{v}\)から、上で算出したベクトル\(\boldsymbol{v}_\mathrm{v}\)を引くと求めたい\(\boldsymbol{v}_\mathrm{h}\)が残る。


さいごに

公式を暗記する必要はないと思いますが、その式が本当にあっているか判断できることは重要だと思います。特に他のサイトでは、ベクトルが正規化されている前提での式が紹介されていることがあります。
少しでも参考になればと思います。

以上です。

Ad.