Misplaced Pages

Scaling (geometry): Difference between revisions

Article snapshot taken from Wikipedia with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.
Browse history interactively← Previous editNext edit →Content deleted Content addedVisualWikitext
Revision as of 07:12, 28 November 2018 editBoothsift (talk | contribs)Extended confirmed users, Pending changes reviewers, Rollbackers7,251 editsm Reverted 1 edit by 2600:1017:B001:C052:2CBE:7DA1:2553:11E9 (talk) to last revision by RainFall. (TW)Tag: Undo← Previous edit Revision as of 19:49, 13 January 2019 edit undoPengo (talk | contribs)Administrators19,329 edits See also: Dilation, Homothetic transformationNext edit →
Line 131: Line 131:


==See also== ==See also==
* ]
* ]
* ] * ]
* ] * ]

Revision as of 19:49, 13 January 2019

This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.
Find sources: "Scaling" geometry – news · newspapers · books · scholar · JSTOR (April 2008) (Learn how and when to remove this message)

In Euclidean geometry, uniform scaling (or isotropic scaling) is a linear transformation that enlarges (increases) or shrinks (diminishes) objects by a scale factor that is the same in all directions. The result of uniform scaling is similar (in the geometric sense) to the original. A scale factor of 1 is normally allowed, so that congruent shapes are also classed as similar. Uniform scaling happens, for example, when enlarging or reducing a photograph, or when creating a scale model of a building, car, airplane, etc.

More general is scaling with a separate scale factor for each axis direction. Non-uniform scaling (anisotropic scaling) is obtained when at least one of the scaling factors is different from the others; a special case is directional scaling or stretching (in one direction). Non-uniform scaling changes the shape of the object; e.g. a square may change into a rectangle, or into a parallelogram if the sides of the square are not parallel to the scaling axes (the angles between lines parallel to the axes are preserved, but not all angles). It occurs, for example, when a faraway billboard is viewed from an oblique angle, or when the shadow of a flat object falls on a surface that is not parallel to it.

When the scale factor is larger than 1, (uniform or non-uniform) scaling is sometimes also called dilation or enlargement. When the scale factor is a positive number smaller than 1, scaling is sometimes also called contraction.

In the most general sense, a scaling includes the case in which the directions of scaling are not perpendicular. It also includes the case in which one or more scale factors are equal to zero (projection), and the case of one or more negative scale factors (a directional scaling by -1 is equivalent to a reflection).

Scaling is a linear transformation, and a special case of homothetic transformation. In most cases, the homothetic transformations are non-linear transformations.

Matrix representation

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 = [ v x 0 0 0 v y 0 0 0 v z ] . {\displaystyle 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 v p = [ v x 0 0 0 v y 0 0 0 v z ] [ p x p y p z ] = [ v x p x v y p y v z p z ] . {\displaystyle S_{v}p={\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_{x}p_{x}\\v_{y}p_{y}\\v_{z}p_{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.

The scaling is uniform if and only if the scaling factors are equal (vx = vy = vz). If all except one of the scale factors are equal to 1, we have directional scaling.

In the case where vx = vy = vz = k, scaling increases the area of any surface by a factor of k and the volume of any solid object by a factor of k.

Scaling in arbitrary dimensions

In n {\displaystyle n} -dimensional space R n {\displaystyle \mathbb {R} ^{n}} , uniform scaling by a factor v {\displaystyle v} is accomplished by scalar multiplication with v {\displaystyle v} , that is, multiplying each coordinate of each point by v {\displaystyle v} . As a special case of linear transformation, it can be achieved also by multiplying each point (viewed as a column vector) with a diagonal matrix whose entries on the diagonal are all equal to v {\displaystyle v} , namely v I {\displaystyle vI} .

Non-uniform scaling is accomplished by multiplication with any symmetric matrix. The eigenvalues of the matrix are the scale factors, and the corresponding eigenvectors are the axes along which each scale factor applies. A special case is a diagonal matrix, with arbitrary numbers v 1 , v 2 , v n {\displaystyle v_{1},v_{2},\ldots v_{n}} along the diagonal: the axes of scaling are then the coordinate axes, and the transformation scales along each axis i {\displaystyle i} by the factor v i {\displaystyle v_{i}}

In uniform scaling with a non-zero scale factor, all non-zero vectors retain their direction (as seen from the origin), or all have the direction reversed, depending on the sign of the scaling factor. In non-uniform scaling only the vectors that belong to an eigenspace will retain their direction. A vector that is the sum of two or more non-zero vectors belonging to different eigenspaces will be tilted towards the eigenspace with largest eigenvalue.

Using homogeneous coordinates

In projective geometry, often used in computer graphics, points are represented using homogeneous coordinates. To scale an object by a vector v = (vx, vy, vz), each homogeneous coordinate vector p = (px, py, pz, 1) would need to be multiplied with this projective transformation matrix:

S v = [ v x 0 0 0 0 v y 0 0 0 0 v z 0 0 0 0 1 ] . {\displaystyle 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 v p = [ v x 0 0 0 0 v y 0 0 0 0 v z 0 0 0 0 1 ] [ p x p y p z 1 ] = [ v x p x v y p y v z p z 1 ] . {\displaystyle S_{v}p={\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_{x}p_{x}\\v_{y}p_{y}\\v_{z}p_{z}\\1\end{bmatrix}}.}

Since the last component of a homogeneous coordinate can be viewed as the denominator of the other three components, a uniform scaling by a common factor s (uniform scaling) can be accomplished by using this scaling matrix:

S v = [ 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 s ] . {\displaystyle S_{v}={\begin{bmatrix}1&0&0&0\\0&1&0&0\\0&0&1&0\\0&0&0&{\frac {1}{s}}\end{bmatrix}}.}

For each vector p = (px, py, pz, 1) we would have

S v p = [ 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 s ] [ p x p y p z 1 ] = [ p x p y p z 1 s ] {\displaystyle S_{v}p={\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}}}

which would be equivalent to

[ s p x s p y s p z 1 ] . {\displaystyle {\begin{bmatrix}sp_{x}\\sp_{y}\\sp_{z}\\1\end{bmatrix}}.}

Function dilation and contraction

Given a point P ( x , y ) {\displaystyle P(x,y)} , the dilation associates it with the point P ( x , y ) {\displaystyle P'(x',y')} through the equations { x = m x y = n y {\displaystyle {\begin{cases}x'=mx\\y'=ny\end{cases}}} for m , n R + {\displaystyle m,n\in \mathbb {R} ^{+}}

Therefore, given a function y = f ( x ) {\displaystyle y=f(x)} , the equation of the dilated function is

y = n f ( x m ) {\displaystyle y=nf\left({\frac {x}{m}}\right)}

Particular cases

If n = 1 {\displaystyle n=1} , the transformation is horizontal; when m > 1 {\displaystyle m>1} , it is a dilation, when m < 1 {\displaystyle m<1} , it is a contraction.

If m = 1 {\displaystyle m=1} , the transformation is vertical; when n > 1 {\displaystyle n>1} it is a dilation, when n < 1 {\displaystyle n<1} , it is a contraction.

Footnotes

  1. Durand; Cutler. "Transformations" (PowerPoint). Massachusetts Institute of Technology. Retrieved 12 September 2008.

See also

External links


Computer graphics
Vector graphics
2D graphics
2.5D
3D graphics
Concepts
Graphics software
Algorithms
Categories: