缩放

维基百科,自由的百科全书
跳转至: 导航搜索

欧几里得几何中,均匀缩放是放大或缩小物体的线性变换缩放因子在所有方向上都是一样的;它也叫做位似变换。均匀缩放的结果相似(在几何意义上)于原始的物体。

更一般的是在每个坐标轴方向上的有单独缩放因子的缩放;特殊情况是方向缩放(在一个方向上)。形状可能变化,比如矩形可能变成不同形状的矩形,还可能变成平行四边形(保持在平行于轴的线之间的角度,但不保持所有的角度)。

矩阵表示[编辑]

缩放可以表示为缩放矩阵。要用一个向量v = (vx, vy, vz)缩放一个物体,每个点p = (px, py, pz)都需要乘以缩放矩阵:

 S_v =
\begin{bmatrix}
v_x & 0 & 0  \\
0 & v_y & 0  \\
0 & 0 & v_z  \\
\end{bmatrix}

如下所示,这个乘法将给出预期的结果:


S_vp =
\begin{bmatrix}
v_x & 0 & 0  \\
0 & v_y & 0  \\
0 & 0 & v_z  \\
\end{bmatrix}
\begin{bmatrix}
p_x \\ p_y \\ p_z
\end{bmatrix}
=
\begin{bmatrix}
v_xp_x \\ v_yp_y \\ v_zp_z
\end{bmatrix}

这种缩放按在缩放因子中间的一个因子改变物体的直径,那在在两个缩放因子的最小和最大乘积之间的一个因子改变它的面积,按所有三个缩放因子的乘积改变它的体积

在最一般意义上的缩放是使用可对角化矩阵的任何仿射变换。它包括缩放的三个方向不垂直的情况。它还包括一个或多个缩放因子等于零的情况(投影),和一个或多个负缩放因子的情况。

齐次坐标[编辑]

使用齐次坐标经常是更加有用的,因为3次元的平移仿射变换)不能用3 × 3矩阵完成。要按一个向量v = (vx, vy, vz)缩放一个物体,所有的齐次向量p = (px, py, pz, 1)都需要乘以缩放矩阵:

 S_v =
\begin{bmatrix}
v_x & 0 & 0 & 0 \\
0 & v_y & 0 & 0 \\
0 & 0 & v_z & 0 \\
0 & 0 & 0 & 1
\end{bmatrix}

如下所示,这个乘法给出预期的结果:


S_vp =
\begin{bmatrix}
v_x & 0 & 0 & 0 \\
0 & v_y & 0 & 0 \\
0 & 0 & v_z & 0 \\
0 & 0 & 0 & 1
\end{bmatrix}
\begin{bmatrix}
p_x \\ p_y \\ p_z \\ 1
\end{bmatrix}
=
\begin{bmatrix}
v_xp_x \\ v_yp_y \\ v_zp_z \\ 1
\end{bmatrix}

缩放是均匀的,当且仅当缩放因子是相等的。如果除了一个因子之外所有缩放因子都是1我们得到方向缩放。

因为齐次坐标的最后成员可以看作其他三个成员的分母,使用公共因子s的缩放可以使用如下缩放矩阵完成:

 S_v =
\begin{bmatrix}
1 & 0 & 0 & 0 \\
0 & 1 & 0 & 0 \\
0 & 0 & 1 & 0 \\
0 & 0 & 0 & \frac{1}{s}
\end{bmatrix}

对于每个齐次向量p =(px, py, pz, 1),我们有


S_vp =
\begin{bmatrix}
1 & 0 & 0 & 0 \\
0 & 1 & 0 & 0 \\
0 & 0 & 1 & 0 \\
0 & 0 & 0 & \frac{1}{s}
\end{bmatrix}
\begin{bmatrix}
p_x \\ p_y \\ p_z \\ 1
\end{bmatrix}
=
\begin{bmatrix}
p_x \\ p_y \\ p_z \\ \frac{1}{s}
\end{bmatrix}

它将均质于


\begin{bmatrix}
sp_x \\ sp_y \\ sp_z \\ 1
\end{bmatrix}

参见[编辑]