Scaling (geometry) Article Index for
Scaling
 

Information About

Scaling (geometry)




More general is scaling with a separate scale factor for each axis direction; a special case is '''directional scaling''' (in one direction). Shape s may change; e.g. a rectangle may change into a rectangle of a different shape, but also in a parallelogram (the angles between lines parallel to the axes are preserved, but not all angles).

A scaling can be represented by a scaling matrix. To scale an object by a Vector ''v'' = (''vx, vy, vz''), each point ''p'' = (''px, py, pz'') would need to be multiplied with this scaling matrix:
: S_v =
\begin{bmatrix}
v_x & 0 & 0 \
0 & v_y & 0 \
0 & 0 & v_z \
\end{bmatrix}


As shown below, the multiplication will give the expected result:
:
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}


Such a scaling changes the Diameter of an object by a factor between the scale factors, the Area by a factor between the smallest and the largest product of two scale factors, and the Volume by the product of all three.

A scaling in the most general sense is any Affine Transformation with a Diagonalizable Matrix . It includes the case that the three directions of scaling are not perpendicular. It includes also the case that one or more scale factors are equal to zero ( Projection ), and the case of one or more negative scale factors. The latter corresponds to a combination of scaling proper and a kind of reflection: along lines in a particular direction we take the reflection in the point of intersection with a plane that need not be perpendicular; therefore it is more general than ordinary reflection in the plane.

Often, it is more useful to use Homogeneous Coordinates , since Translation cannot be accomplished with a 3-by-3 matrix. To scale an object by a Vector ''v'' = (''vx, vy, vz''), each Homogeneous vector ''p'' = (''px, py, pz'', 1) would need to be multiplied with this scaling matrix:
: 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}


As shown below, the multiplication will give the expected result:
:
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}


The scaling is uniform Iff the scaling factors are equal. If all scale factors except one are 1 we have directional scaling.

Since the last component of a homogeneous coordinate can be viewed as the denominator of the other three components, a scaling by a common factor ''s'' can be accomplished by using this scaling matrix:
: S_v =
\begin{bmatrix}
1 & 0 & 0 & 0 \
0 & 1 & 0 & 0 \
0 & 0 & 1 & 0 \
0 & 0 & 0 & rac{1}{s}
\end{bmatrix}


For each Homogeneous vector ''p'' = (''px, py, pz'', 1) we would have
:
S_vp =
\begin{bmatrix}
1 & 0 & 0 & 0 \
0 & 1 & 0 & 0 \
0 & 0 & 1 & 0 \
0 & 0 & 0 & rac{1}{s}
\end{bmatrix}
\begin{bmatrix}
p_x \ p_y \ p_z \ 1
\end{bmatrix}
=
\begin{bmatrix}
p_x \ p_y \ p_z \ rac{1}{s}
\end{bmatrix}

which would be homogenized to
:
\begin{bmatrix}
sp_x \ sp_y \ sp_z \ 1
\end{bmatrix}