Computer Graphics

Affine transformation

158pages on
this wiki
Add New Page
Talk0 Share

In geometry, an affine transformation or affine map (from the Latin, affinis, "connected with") between two vector spaces consists of a linear transformation followed by a translation:

x \mapsto A x+ b.

In the finite-dimensional case each affine transformation is given by a matrix A and a vector b, which can be written as the matrix A with an extra column b. An affine transformation corresponds to multiplication of a matrix and a vector, and composition of affine transformations corresponds to ordinary matrix multiplication, if an extra row is added at the bottom of the matrix containing only zeros except a 1 at the right:

\begin{bmatrix} A & b \\ 0..0 & 1 \end{bmatrix}

while an element 1 is added at the bottom of column vectors:

\begin{bmatrix} x \\ 1 \end{bmatrix}

(homogeneous coordinates).

An affine transformation is invertible iff A is invertible. The invertible affine transformations form the affine group, which has the general linear group of degree n as subgroup and is itself a subgroup of the general linear group of degree n+1.

The similarity transformations form the subgroup where A is a scalar times an orthogonal matrix. Iff the determinant of A is 1 or -1 then the transformation preserves area; these also form a subgroup. Combining both conditions we have the isometries, the subgroup of both where A is an orthogonal matrix.

Each of these groups has a subgroup of transformations which preserve orientation: those where the determinant of A is positive. In the last case this is in 3D the group of rigid body motions (proper rotations and pure translations).

For matrix A the following propositions are equivalent:

  • A - I is invertible
  • A has not eigenvalue 1
  • for all b the transformation has exactly one fixed point
  • there is a b for which the transformation has exactly one fixed point
  • affine transformations with matrix A can be written as a linear transformation with some point as origin

If there is a fixed point we can take that as the origin, and the affine transformation reduces to a linear transformation. This may make it easier to classify and understand the transformation. For example, describing a transformation as a rotation by a certain angle with respect to a certain axis is easier to get an idea of the overall behavior of the transformation than describing it as a combination of a translation and a rotation. However, this depends on application and context. Describing such a transformation for an object tends to make more sense in terms of rotation about an axis through the center of that object, combined with a translation, rather than by just a rotation with respect to some distant point. For example "move 200 m north and rotate 90° anti-clockwise", rather than the equivalent "with respect to the point 141 m to the northwest, rotate 90° anti-clockwise".

Affine transformations in 2D without fixed point (so where A has eigenvalue 1) are:

  • pure translations
  • scaling in a given direction, with respect to a line in another direction (not necessarily perpendicular), combined with translation that is not purely in the direction of scaling; the scale factor is the other eigenvalue; taking "scaling" in a generalized sense it includes the cases that the scale factor is zero (projection) and negative; the latter includes reflection, and combined with translation it includes glide reflection.
  • shear combined with translation that is not purely in the direction of the shear (there is no other eigenvalue than 1; it has algebraic multiplicity 2, but geometric multiplicity 1)

In a geometric setting, affine transformations are precisely the functions that map straight lines to straight lines.

A linear transformation is a function that preserves all linear combinations; an affine transformation is a function that preserves all affine combinations. An affine combination is a linear combination in which the sum of the coefficients is 1.

An affine subspace of a vector space (sometimes called a linear manifold) is a coset of a linear subspace; i.e., it is the result of adding a constant vector to every element of the linear subspace. A linear subspace of a vector space is a subset that is closed under linear combinations; an affine subspace is one that is closed under affine combinations.

For example, in 3D lines and planes through the origin, the origin, and the whole space are the linear subspaces, while points, lines and planes in general as well as the whole space are the affine subspaces.

Just as members of a set of vectors are linearly independent if none is a linear combination of the others, so also they are affinely independent if none is an affine combination of the others. The set of linear combinations of a set of vectors is their "linear span" and is always a linear subspace; the set of all affine combinations is their "affine span" and is always an affine subspace. For example, the affine span of a set of two points is the line that contains both; the affine span of a set of three non-collinear points is the plane that contains all three. Vectors

v1, v2,. ., vn

are linearly dependent if scalars

a1, a2,. ., an

exist, not all 0, such that

a1v1 +. .. + anvn = 0.

Similarly they are affinely dependent if the same is true and also

a1 + ... + an = 1.

Such a vector (a1,. .., an) is an affine dependence among the vectors v1, v2,. .., vn.

The set of all invertible affine transformations forms a group under the operation of composition of functions. That group is called the affine group, and is the semidirect product of Kn and GL(n, k).

Affine transformation of the planeEdit

To visualise the general affine transformation of the Euclidean plane, take labelled parallelograms ABCD and A′B′C′D′. Whatever the choices of points, there is an affine transformation T of the plane taking A to A′, and each vertex similarly. Supposing we exclude the degenerate case where ABCD has zero area, there is a unique such affine transformation T. Drawing out a whole grid of parallelograms based on ABCD, the image T(P) of any point P is determined by noting that T(A) = A′, T applied to the line segment AB is A′B′, T applied to the line segment AC is A′C′, and T respects scalar multiples of vectors based at A. [If A, E, F are colinear then the ratio length(AF)/length(AE) is equal to length(AF′)/length(AE′).] Geometrically T transforms the grid based on ABCD to that based in A′B′C′D′.

Affine transformations don't respect lengths or angles; they multiply area by a constant factor

area of A′B′C′D′/area of ABCD.

A given T may either be direct (respect orientation), or indirect (reverse orientation), and this may be determined by its effect on signed areas (as defined, for example, by the cross product of vectors).

Example of an affine transformationEdit

The following equation expresses an affine transformation in GF(2) (with "+" representing XOR):

\{\,a'\,\} = M\{\,a\,\} + \{\,v\,\}.

where [M] is the matrix

1&0&0&0&1&1&1&1 \\
1&1&0&0&0&1&1&1 \\
1&1&1&0&0&0&1&1 \\
1&1&1&1&0&0&0&1 \\
1&1&1&1&1&0&0&0 \\
0&1&1&1&1&1&0&0 \\
0&0&1&1&1&1&1&0 \\

and {v} is the vector

\begin{bmatrix} 1 \\ 1 \\ 0 \\ 0 \\ 0 \\ 1 \\ 1 \\ 0 \end{bmatrix}.

For instance, the affine transformation of the element {a} = x7 + x6 + x3 + x = {11001010} in big-endian binary notation = {CA} in big-endian hexadecimal notation, is calculated as follows:

a_0' = a_0 \oplus a_4 \oplus a_5 \oplus a_6 \oplus a_7 \oplus 1 = 0 \oplus 0 \oplus 0 \oplus 1 \oplus 1 \oplus 1 = 1
a_1' = a_0 \oplus a_1 \oplus a_5 \oplus a_6 \oplus a_7 \oplus 1 = 0 \oplus 1 \oplus 0 \oplus 1 \oplus 1 \oplus 1 = 0
a_2' = a_0 \oplus a_1 \oplus a_2 \oplus a_6 \oplus a_7 \oplus 0 = 0 \oplus 1 \oplus 0 \oplus 1 \oplus 1 \oplus 0 = 1
a_3' = a_0 \oplus a_1 \oplus a_2 \oplus a_3 \oplus a_7 \oplus 0 = 0 \oplus 1 \oplus 0 \oplus 1 \oplus 1 \oplus 0 = 1
a_4' = a_0 \oplus a_1 \oplus a_2 \oplus a_3 \oplus a_4 \oplus 0 = 0 \oplus 1 \oplus 0 \oplus 1 \oplus 0 \oplus 0 = 0
a_5' = a_1 \oplus a_2 \oplus a_3 \oplus a_4 \oplus a_5 \oplus 1 = 1 \oplus 0 \oplus 1 \oplus 0 \oplus 0 \oplus 1 = 1
a_6' = a_2 \oplus a_3 \oplus a_4 \oplus a_5 \oplus a_6 \oplus 1 = 0 \oplus 1 \oplus 0 \oplus 0 \oplus 1 \oplus 1 = 1
a_7' = a_3 \oplus a_4 \oplus a_5 \oplus a_6 \oplus a_7 \oplus 0 = 1 \oplus 0 \oplus 0 \oplus 1 \oplus 1 \oplus 0 = 1.

Thus, {a′} = x7 + x6 + x5 + x3 + x2 + 1 = {11101101} = {ED}

See also Edit

Ad blocker interference detected!

Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.