三维几何变换
同二维变换类似,三维变换同样引入了齐次坐标技术,在四维空间 $(x,y,z,w)$ 内进行讨论。定义了规范化齐次坐标以后,三维图形几何变换就可以表示为物体顶点集合的规范化齐次坐标矩阵与某一变换矩阵相乘的形式。用规范化齐次坐标表示的三维图形几何变换矩阵是一个4×4方阵,简称为三维几何变换矩阵。
$$
T=\left[
\begin{matrix}
a & b & c & p\\
d & e & f & q\\
g & h & i & r\\
l & m & n & s
\end{matrix}
\right]
$$
$P’ = P \cdot T$
平移变换
$$
T=\left[
\begin{matrix}
1 & 0 & 0 & 0\\
0 & 1 & 0 & 0\\
0 & 0 & 1 & 0\\
T_x & T_y & T_z & 1
\end{matrix}
\right]
$$
比例变换
$$
T=\left[
\begin{matrix}
S_x & 0 & 0 & 0\\
0 & S_y & 0 & 0\\
0 & 0 & S_z & 0\\
0 & 0 & 0 & 1
\end{matrix}
\right]
$$
旋转变换
绕x轴旋转
$$
T=\left[
\begin{matrix}
1 & 0 & 0 & 0\\
0 & \cos \beta & \sin \beta & 0\\
0 & -\sin \beta & \cos \beta & 0\\
0 & 0 & 0 & 1
\end{matrix}
\right]
$$
绕y轴旋转
$$
T=\left[
\begin{matrix}
\cos \beta & 0 & -\sin \beta & 0\\
0 & 1 & 0 & 0\\
\sin \beta & 0 & \cos \beta & 0\\
0 & 0 & 0 & 1
\end{matrix}
\right]
$$
绕z轴旋转
$$
T=\left[
\begin{matrix}
\cos \beta & \sin \beta & 0 & 0\\
-\sin \beta & \cos \beta & 0 & 0\\
0 & 0 & 1 & 0\\
0 & 0 & 0 & 1
\end{matrix}
\right]
$$
β为正向旋转角
反射变换
关于x轴的反射
$$
T=\left[
\begin{matrix}
1 & 0 & 0 & 0\\
0 & -1 & 0 & 0\\
0 & 0 & -1 & 0\\
0 & 0 & 0 & 1
\end{matrix}
\right]
$$
关于y轴的反射
$$
T=\left[
\begin{matrix}
-1 & 0 & 0 & 0\\
0 & 1 & 0 & 0\\
0 & 0 & -1 & 0\\
0 & 0 & 0 & 1
\end{matrix}
\right]
$$
关于z轴的反射
$$
T=\left[
\begin{matrix}
-1 & 0 & 0 & 0\\
0 & -1 & 0 & 0\\
0 & 0 & 1 & 0\\
0 & 0 & 0 & 1
\end{matrix}
\right]
$$
关于xoy面的反射
$$
T=\left[
\begin{matrix}
1 & 0 & 0 & 0\\
0 & 1 & 0 & 0\\
0 & 0 & -1 & 0\\
0 & 0 & 0 & 1
\end{matrix}
\right]
$$
关于yoz面的反射
$$
T=\left[
\begin{matrix}
-1 & 0 & 0 & 0\\
0 & 1 & 0 & 0\\
0 & 0 & 1 & 0\\
0 & 0 & 0 & 1
\end{matrix}
\right]
$$
关于xoz面的反射
$$
T=\left[
\begin{matrix}
1 & 0 & 0 & 0\\
0 & -1 & 0 & 0\\
0 & 0 & 1 & 0\\
0 & 0 & 0 & 1
\end{matrix}
\right]
$$
错切变换
$$
T=\left[
\begin{matrix}
1 & b & c & 0\\
d & 1 & f & 0\\
g & h & 1 & 0\\
0 & 0 & 0 & 1
\end{matrix}
\right]
$$
沿x方向错切
$$
T=\left[
\begin{matrix}
1 & 0& 0 & 0\\
d & 1 & 0 & 0\\
g & 0 & 1 & 0\\
0 & 0 & 0 & 1
\end{matrix}
\right]
$$
沿y方向错切
$$
T=\left[
\begin{matrix}
1 & b & 0 & 0\\
0 & 1 & 0 & 0\\
0 & h & 1 & 0\\
0 & 0 & 0 & 1
\end{matrix}
\right]
$$
沿z方向错切
$$
T=\left[
\begin{matrix}
1 & 0 & c & 0\\
0 & 1 & f & 0\\
0 & 0 & 1 & 0\\
0 & 0 & 0 & 1
\end{matrix}
\right]
$$