📜  计算机图形学– 3D中的反射变换

📅  最后修改于: 2021-08-28 04:55:13             🧑  作者: Mango

3D空间中的反射与2D空间中的反射非常相似,但是3D中存在一个差异,这里我们必须处理三个轴(x,y,z)。反射不过是对象的镜像。

在3D空间中可能发生三种反射:

  • 沿XY平面反射。
  • 沿YZ平面反射。
  • 沿XZ平面反射。

1.沿XY平面的反射:如下图所示–

沿xy平面反射

反射变换矩阵用于对3D图像执行反射操作,如下所示:

\hspace{4.5cm} \Large R_{xy} =\left[\begin{matrix}1&0&0&0\\ 0&1&0&0\\ 0&0&-1&0\\0&0&0&1\end{matrix}\right]

考虑,在反射P [x,y,z]变为P′[x′,y′,z′]之后,使在3D空间中的点P [x,y,z]沿XY方向反射。

\hspace{4.5cm} \Large P'[x\,\,y\,\,z\,\,1]=P[x\,\,y\,\,z\,\,1].R_{xy}

2.沿YZ平面的反射:这是 下图所示–

沿YZ平面反射

yz轴的反射变换矩阵如下:

\hspace{4.5cm} \Large R_{yz} =\left[\begin{matrix}-1&0&0&0\\ 0&1&0&0\\ 0&0&1&0\\0&0&0&1\end{matrix}\right]

考虑,在反射P [x,y,z]变为P′[x′,y′,z′]之后,使3D空间中的点P [x,y,z]沿YZ方向反射。

\hspace{4.5cm} \Large P'[x\,\,y\,\,z\,\,1]=P[x\,\,y\,\,z\,\,1].R_{yz}

3.沿XZ平面的反射:如下图所示–

沿XZ平面的反射:

zx轴的反射变换矩阵如下:

\hspace{4.5cm} \Large R_{zx} =\left[\begin{matrix}1&0&0&0\\ 0&-1&0&0\\ 0&0&1&0\\0&0&0&1\end{matrix}\right]

考虑,使在3D空间中的点P [x,y,z]沿着ZX方向反射,在反射P [x,y,z]变成P'[x’,y’,z’]之后。

\hspace{4.5cm} \Large P'[x\,\,y\,\,z\,\,1]=P[x\,\,y\,\,z\,\,1].R_{zx}

考虑下面给出的立方体“ OABCDEFG”,沿YZ平面对其执行反射变换。

给定的多维数据集如下:

图。1

因此,沿YZ轴的反射变换的矩阵表示条件为:

\hspace{4.5cm} \Large R_{yz} =\left[\begin{matrix}-1&0&0&0\\ 0&1&0&0\\ 0&0&1&0\\0&0&0&1\end{matrix}\right]

执行反射变换后,点O [0 0 0]变为O’:
\hspace{4cm} \mathbf{\Large O'[x\hspace{0.2cm}y\hspace{0.2cm}z\hspace{0.2cm}1]=[0\hspace{0.2cm}0\hspace{0.2cm}0\hspace{0.2cm}\hspace{0.2cm}1]\left[\begin{matrix}1&0&0&0\\ 0&1&0&0\\ 0&0&-1&0\\0&0&0&1\end{matrix}\right]} \\ \hspace{6.68cm}\Large \mathbf{=[0\hspace{0.2cm}0\hspace{0.2cm}0\hspace{0.2cm}1]}\\ \hspace{4.37cm}\mathbf{O'[x ,y ,z]=[0 ,0 ,0]}

执行反射变换后,点A [0 4 0]变为A’:
\hspace{4cm} \mathbf{\Large A'[x\hspace{0.2cm}y\hspace{0.2cm}z\hspace{0.2cm}1]=[0\hspace{0.2cm}4\hspace{0.2cm}0\hspace{0.2cm}\hspace{0.2cm}1]\left[\begin{matrix}1&0&0&0\\ 0&1&0&0\\ 0&0&-1&0\\0&0&0&1\end{matrix}\right]}\\ \hspace{6.68cm}\Large\mathbf{=[0\hspace{0.2cm}4\hspace{0.2cm}0\hspace{0.2cm}1]}\\ \hspace{4.37cm}\Large\mathbf{A'[x ,y ,z]=[0 ,4 ,0]}

执行反射变换后,点B [0 4 4]变为B’:
\hspace{4cm} \mathbf{\Large B'[x\hspace{0.2cm}y\hspace{0.2cm}z\hspace{0.2cm}1]=[0\hspace{0.2cm}4\hspace{0.2cm}4\hspace{0.2cm}\hspace{0.2cm}1]\left[\begin{matrix}1&0&0&0\\ 0&1&0&0\\ 0&0&-1&0\\0&0&0&1\end{matrix}\right]}\\ \hspace{6.68cm}\Large\mathbf{=[0\hspace{0.2cm}4\hspace{0.2cm}4\hspace{0.2cm}1]} \newline \hspace{4.37cm}\Large\mathbf{B'[x ,y ,z]=[0 ,4 ,4]}

执行反射变换后,点C [-4 4 0]变为C’:
\hspace{4cm} \mathbf{\Large C'[x\hspace{0.2cm}y\hspace{0.2cm}z\hspace{0.2cm}1]=[4\hspace{0.2cm}4\hspace{0.2cm}0\hspace{0.2cm}\hspace{0.2cm}1]\left[\begin{matrix}1&0&0&0\\ 0&1&0&0\\ 0&0&-1&0\\0&0&0&1\end{matrix}\right]}\\ \hspace{6.68cm} \Large \mathbf{=[-4\hspace{0.2cm}4\hspace{0.2cm}0\hspace{0.2cm}1]}\\ \newline \hspace{4.37cm}\Large\mathbf{C'[x ,y ,z]=[-4 ,4 ,0]}

执行反射变换后,点D [4 4 4]变为D’:
\hspace{4cm} \mathbf{\Large D'[x\hspace{0.2cm}y\hspace{0.2cm}z\hspace{0.2cm}1]=[4\hspace{0.2cm}4\hspace{0.2cm}4\hspace{0.2cm}\hspace{0.2cm}1]\left[\begin{matrix}1&0&0&0\\ 0&1&0&0\\ 0&0&-1&0\\0&0&0&1\end{matrix}\right]}\\ \hspace{6.68cm}\Large \mathbf{=[-4\hspace{0.2cm}4\hspace{0.2cm}4\hspace{0.2cm}1]}\\ \hspace{4.37cm}\Large\mathbf{D'[x ,y ,z]=[-4 ,4 ,4]}

执行反射变换后,点E [4 0 0]变为E’:
\hspace{4cm} \mathbf{\Large E'[x\hspace{0.2cm}y\hspace{0.2cm}z\hspace{0.2cm}1]=[4\hspace{0.2cm}0\hspace{0.2cm}0\hspace{0.2cm}\hspace{0.2cm}1]\left[\begin{matrix}1&0&0&0\\ 0&1&0&0\\ 0&0&-1&0\\0&0&0&1\end{matrix}\right]}\\ \hspace{6.68cm} \Large\mathbf{=[-4\hspace{0.2cm}0\hspace{0.2cm}0\hspace{0.2cm}1]}\\ \hspace{4.37cm}\mathbf{E'[x ,y ,z]=[-4 ,0 ,0]}

执行反射变换后,点F [0 0 4]变为F’:
\hspace{4cm} \mathbf{\Large F'[x\hspace{0.2cm}y\hspace{0.2cm}z\hspace{0.2cm}1]=[0\hspace{0.2cm}0\hspace{0.2cm}4\hspace{0.2cm}\hspace{0.2cm}1]\left[\begin{matrix}1&0&0&0\\ 0&1&0&0\\ 0&0&-1&0\\0&0&0&1\end{matrix}\right]}\\ \hspace{6.68cm}\Large \mathbf{=[0\hspace{0.2cm}0\hspace{0.2cm}4\hspace{0.2cm}1]}\\ \hspace{4.37cm}\mathbf{F'[x ,y ,z]=[0 ,0 ,4]}

执行反射变换后,点G [4 0 4]变为G’:
\hspace{4cm} \mathbf{\Large G'[x\hspace{0.2cm}y\hspace{0.2cm}z\hspace{0.2cm}1]=[4\hspace{0.2cm}0\hspace{0.2cm}4\hspace{0.2cm}\hspace{0.2cm}1]\left[\begin{matrix}1&0&0&0\\ 0&1&0&0\\ 0&0&-1&0\\0&0&0&1\end{matrix}\right]}\\ \hspace{6.68cm}\Large \mathbf{=[-4\hspace{0.2cm}0\hspace{0.2cm}4\hspace{0.2cm}1]}\\ \newline \hspace{4.37cm}\mathbf{G'[x ,y ,z]=[-4 ,0 ,4]}

在对上图(图1)执行反射变换后,将看起来像:

反射的3D图像