Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Transformation matrix
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Central object in linear algebra; mapping vectors to vectors}} {{Use American English|date=January 2019}} In [[linear algebra]], [[linear transformation]]s can be represented by [[matrix (mathematics)|matrices]]. If <math>T</math> is a linear transformation mapping <math>\mathbb{R}^n</math> to <math>\mathbb{R}^m</math> and <math>\mathbf x</math> is a [[column vector]] with <math>n</math> entries, then there exists an <math>m \times n</math> matrix <math>A</math>, called the '''transformation matrix''' of <math>T</math>,<ref name="James_Gentle">{{cite book | last = Gentle | first = James E. |chapter = Matrix Transformations and Factorizations |title = Matrix Algebra: Theory, Computations, and Applications in Statistics |publisher = Springer |year = 2007 |isbn = 9780387708737 |chapter-url = https://books.google.com/books?id=PDjIV0iWa2cC&pg=PA172 }}</ref> such that: <math display="block">T( \mathbf x ) = A \mathbf x</math> Note that <math>A</math> has <math>m</math> rows and <math>n</math> columns, whereas the transformation <math>T</math> is from <math>\mathbb{R}^n</math> to <math>\mathbb{R}^m</math>. There are alternative expressions of transformation matrices involving [[row vector]]s that are preferred by some authors.<ref>[[Rafael Artzy]] (1965) ''Linear Geometry''</ref><ref>[[J. W. P. Hirschfeld]] (1979) ''Projective Geometry of Finite Fields'', [[Clarendon Press]]</ref> ==Uses== Matrices allow arbitrary [[linear transformations]] to be displayed in a consistent format, suitable for computation.<ref name="James_Gentle"></ref> This also allows transformations to be [[Function composition|composed]] easily (by multiplying their matrices). Linear transformations are not the only ones that can be represented by matrices. Some transformations that are non-linear on an n-dimensional [[Euclidean space]] '''R'''<sup>''n''</sup> can be represented as linear transformations on the ''n''+1-dimensional space '''R'''<sup>''n''+1</sup>. These include both [[affine transformations]] (such as [[Translation (geometry)|translation]]) and [[projective transformation]]s. For this reason, 4×4 transformation matrices are widely used in [[3D computer graphics]]. These ''n''+1-dimensional transformation matrices are called, depending on their application, ''affine transformation matrices'', ''projective transformation matrices'', or more generally ''non-linear transformation matrices''. With respect to an ''n''-dimensional matrix, an ''n''+1-dimensional matrix can be described as an [[augmented matrix]]. In the [[physics|physical sciences]], an [[active transformation]] is one which actually changes the physical position of a [[system]], and makes sense even in the absence of a [[coordinate system]] whereas a [[passive transformation]] is a change in the coordinate description of the physical system ([[change of basis]]). The distinction between active and passive [[Transformation (mathematics)|transformations]] is important. By default, by ''transformation'', [[mathematician]]s usually mean active transformations, while [[physicist]]s could mean either. Put differently, a ''passive'' transformation refers to description of the ''same'' object as viewed from two different coordinate frames. ==Finding the matrix of a transformation== If one has a linear transformation <math>T(x)</math> in functional form, it is easy to determine the transformation matrix ''A'' by transforming each of the vectors of the [[standard basis]] by ''T'', then inserting the result into the columns of a matrix. In other words, <math display="block">A = \begin{bmatrix} T( \mathbf e_1 ) & T( \mathbf e_2 ) & \cdots & T( \mathbf e_n ) \end{bmatrix}</math> For example, the function <math>T(x) = 5x</math> is a linear transformation. Applying the above process (suppose that ''n'' = 2 in this case) reveals that: <math display="block">T( \mathbf{x} ) = 5 \mathbf{x} = 5I\mathbf{x} = \begin{bmatrix} 5 & 0 \\ 0 & 5 \end{bmatrix} \mathbf{x}</math> The matrix representation of vectors and operators depends on the chosen basis; a [[matrix similarity|similar]] matrix will result from an alternate basis. Nevertheless, the method to find the components remains the same. To elaborate, vector <math>\mathbf v</math> [[linear combination|can be represented]] in basis vectors, <math>E = \begin{bmatrix}\mathbf e_1 & \mathbf e_2 & \cdots & \mathbf e_n\end{bmatrix}</math> with coordinates <math> [\mathbf v]_E = \begin{bmatrix} v_1 & v_2 & \cdots & v_n \end{bmatrix}^\mathrm{T}</math>: <math display="block">\mathbf v = v_1 \mathbf e_1 + v_2 \mathbf e_2 + \cdots + v_n \mathbf e_n = \sum_i v_i \mathbf e_i = E [\mathbf v]_E</math> Now, express the result of the transformation matrix ''A'' upon <math>\mathbf v</math>, in the given basis: <math display="block">\begin{align} A(\mathbf v) &= A \left(\sum_i v_i \mathbf e_i \right) = \sum_i {v_i A(\mathbf e_i)} \\ &= \begin{bmatrix}A(\mathbf e_1) & A(\mathbf e_2) & \cdots & A(\mathbf e_n)\end{bmatrix} [\mathbf v]_E = A \cdot [\mathbf v]_E \\[3pt] &= \begin{bmatrix}\mathbf e_1 & \mathbf e_2 & \cdots & \mathbf e_n \end{bmatrix} \begin{bmatrix} a_{1,1} & a_{1,2} & \cdots & a_{1,n} \\ a_{2,1} & a_{2,2} & \cdots & a_{2,n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n,1} & a_{n,2} & \cdots & a_{n,n} \\ \end{bmatrix} \begin{bmatrix} v_1 \\ v_2 \\ \vdots \\ v_n\end{bmatrix} \end{align}</math> The <math>a_{i,j}</math> elements of matrix ''A'' are determined for a given basis ''E'' by applying ''A'' to every <math>\mathbf e_j = \begin{bmatrix} 0 & 0 & \cdots & (v_j=1) & \cdots & 0 \end{bmatrix}^\mathrm{T}</math>, and observing the response vector <math display="block">A \mathbf e_j = a_{1,j} \mathbf e_1 + a_{2,j} \mathbf e_2 + \cdots + a_{n,j} \mathbf e_n = \sum_i a_{i,j} \mathbf e_i.</math> This equation defines the wanted elements, <math>a_{i,j}</math>, of ''j''-th column of the matrix ''A''.<ref>{{cite book |last= Nearing |first= James |year=2010 |title= Mathematical Tools for Physics |url = http://www.physics.miami.edu/nearing/mathmethods |chapter = Chapter 7.3 Examples of Operators |chapter-url = http://www.physics.miami.edu/~nearing/mathmethods/operators.pdf |access-date = January 1, 2012 |isbn = 978-0486482125 }}</ref> ===Eigenbasis and diagonal matrix=== {{Main|Diagonal matrix|Eigenvalues and eigenvectors}} Yet, there is a special basis for an operator in which the components form a [[diagonal matrix]] and, thus, multiplication complexity reduces to {{mvar|n}}. Being diagonal means that all coefficients <math>a_{i,j} </math> except <math>a_{i,i}</math> are zeros leaving only one term in the sum <math display="inline">\sum a_{i,j} \mathbf e_i</math> above. The surviving diagonal elements, <math>a_{i,i}</math>, are known as '''eigenvalues''' and designated with <math>\lambda_i</math> in the defining equation, which reduces to <math>A \mathbf e_i = \lambda_i \mathbf e_i</math>. The resulting equation is known as '''eigenvalue equation'''.<ref>{{cite book |last = Nearing |first = James |year = 2010 |title = Mathematical Tools for Physics |url = http://www.physics.miami.edu/nearing/mathmethods |chapter = Chapter 7.9: Eigenvalues and Eigenvectors |chapter-url = http://www.physics.miami.edu/~nearing/mathmethods/operators.pdf |access-date = January 1, 2012 |isbn = 978-0486482125 }}</ref> The [[Eigenvalues and eigenvectors|eigenvectors and eigenvalues are derived from it via the '''characteristic polynomial''']]. With [[Diagonalizable matrix#Diagonalization|diagonalization]], it is [[diagonalizability|often possible]] to [[change of basis|translate]] to and from eigenbases. ==Examples in 2 dimensions== Most common [[geometric transformation]]s that keep the origin fixed are linear, including rotation, scaling, shearing, reflection, and orthogonal projection; if an affine transformation is not a pure translation it keeps some point fixed, and that point can be chosen as origin to make the transformation linear. In two dimensions, linear transformations can be represented using a 2×2 transformation matrix. ===Stretching=== A stretch in the ''xy''-plane is a linear transformation which enlarges all distances in a particular direction by a constant factor but does not affect distances in the perpendicular direction. We only consider stretches along the x-axis and y-axis. A stretch along the x-axis has the form {{math|1=<var>x'</var> = <var>kx</var>}}; {{math|1=<var>y'</var> = <var>y</var>}} for some positive constant {{mvar|k}}. (Note that if {{math|1=<var>k</var> > 1}}, then this really is a "stretch"; if {{math|1=<var>k</var> < 1}}, it is technically a "compression", but we still call it a stretch. Also, if {{math|1=<var>k</var> = 1}}, then the transformation is an identity, i.e. it has no effect.) The matrix associated with a stretch by a factor {{mvar|k}} along the x-axis is given by: <math display="block">\begin{bmatrix} k & 0 \\ 0 & 1 \end{bmatrix} </math> Similarly, a stretch by a factor <var>k</var> along the y-axis has the form {{math|1=<var>x'</var> = <var>x</var>}}; {{math|1=<var>y'</var> = <var>ky</var>}}, so the matrix associated with this transformation is <math display="block">\begin{bmatrix} 1 & 0 \\ 0 & k \end{bmatrix} </math> ===Squeezing=== If the two stretches above are combined with reciprocal values, then the transformation matrix represents a [[squeeze mapping]]: <math display="block">\begin{bmatrix} k & 0 \\ 0 & 1/k \end{bmatrix} .</math> A square with sides parallel to the axes is transformed to a rectangle that has the same area as the square. The reciprocal stretch and compression leave the area invariant. ===Rotation=== For [[coordinate rotation|rotation]] by an angle θ '''counterclockwise''' (positive direction) about the origin the functional form is <math>x' = x \cos \theta - y \sin \theta</math> and <math>y' = x \sin \theta + y \cos \theta</math>. Written in matrix form, this becomes:<ref>{{Cite web | url=http://ocw.mit.edu/courses/aeronautics-and-astronautics/16-07-dynamics-fall-2009/lecture-notes/MIT16_07F09_Lec03.pdf | title=Lecture Notes | website=ocw.mit.edu | access-date=2024-07-28}}</ref> <math display="block">\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} \cos \theta & -\sin\theta \\ \sin \theta & \cos \theta \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix}</math> Similarly, for a rotation '''clockwise''' (negative direction) about the origin, the functional form is <math>x' = x \cos \theta + y \sin \theta</math> and <math>y' = -x \sin \theta + y \cos \theta</math> the matrix form is: <math display="block">\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} \cos \theta & \sin\theta \\ -\sin \theta & \cos \theta \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix}</math> These formulae assume that the ''x'' axis points right and the ''y'' axis points up. ===Shearing=== For [[shear mapping]] (visually similar to slanting), there are two possibilities. A shear parallel to the ''x'' axis has <math>x' = x + ky</math> and <math>y' = y</math>. Written in matrix form, this becomes: <math display="block">\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} 1 & k \\ 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix}</math> A shear parallel to the ''y'' axis has <math>x' = x</math> and <math>y' = y + kx</math>, which has matrix form: <math display="block"> \begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} 1 & 0 \\ k & 1 \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} </math> ===Reflection=== {{main|Householder transformation}} For reflection about a line that goes through the origin, let <math>\mathbf{l} = (l_x, l_y)</math> be a [[vector (geometric)|vector]] in the direction of the line. Then the transformation matrix is: <math display="block">\mathbf{A} = \frac{1}{\lVert\mathbf{l}\rVert^2} \begin{bmatrix} l_x^2 - l_y^2 & 2 l_x l_y \\ 2 l_x l_y & l_y^2 - l_x^2 \end{bmatrix}</math> ===Orthogonal projection=== {{further|Orthogonal projection}} To project a vector orthogonally onto a line that goes through the origin, let <math>\mathbf{u} = (u_x, u_y)</math> be a [[vector (geometric)|vector]] in the direction of the line. Then the transformation matrix is: <math display="block">\mathbf{A} = \frac{1}{\lVert\mathbf{u}\rVert^2} \begin{bmatrix} u_x^2 & u_x u_y \\ u_x u_y & u_y^2 \end{bmatrix}</math> As with reflections, the orthogonal projection onto a line that does not pass through the origin is an affine, not linear, transformation. [[Projection (linear algebra)|Parallel projections]] are also linear transformations and can be represented simply by a matrix. However, perspective projections are not, and to represent these with a matrix, [[Homogeneous coordinates#Use in computer graphics and computer vision|homogeneous coordinates]] can be used. ==Examples in 3D computer graphics== ===Rotation=== The [[rotation matrix#General 3D rotations|matrix to rotate]] an angle ''θ'' about any axis defined by [[unit vector]] (''x'',''y'',''z'') is<ref>{{cite book |page = 154 |title = Basic Mathematics for Electronic Engineers:Models and Applications |first = John E. |last = Szymanski |publisher = Taylor & Francis |year = 1989 |isbn = 0278000681 }}</ref> <math display="block">\begin{bmatrix} xx(1-\cos \theta)+\cos\theta & yx(1-\cos\theta)-z\sin\theta & zx(1-\cos\theta)+y\sin\theta\\ xy(1-\cos\theta)+z\sin\theta & yy(1-\cos\theta)+\cos\theta & zy(1-\cos\theta)-x\sin\theta \\ xz(1-\cos\theta)-y\sin\theta & yz(1-\cos\theta)+x\sin\theta & zz(1-\cos\theta)+\cos\theta \end{bmatrix}.</math> ===Reflection=== {{main|Householder transformation}} To reflect a point through a plane <math>ax + by + cz = 0</math> (which goes through the origin), one can use <math>\mathbf{A} = \mathbf{I} - 2\mathbf{NN}^\mathrm{T} </math>, where <math>\mathbf{I}</math> is the 3×3 identity matrix and <math>\mathbf{N}</math> is the three-dimensional [[unit vector]] for the vector normal of the plane. If the [[L2 norm|''L''<sup>2</sup> norm]] of <math>a</math>, <math>b</math>, and <math>c</math> is unity, the transformation matrix can be expressed as: <math display="block">\mathbf{A} = \begin{bmatrix} 1 - 2 a^2 & - 2 a b & - 2 a c \\ - 2 a b & 1 - 2 b^2 & - 2 b c \\ - 2 a c & - 2 b c & 1 - 2c^2 \end{bmatrix}</math> Note that these are particular cases of a [[Householder reflection]] in two and three dimensions. A reflection about a line or plane that does not go through the origin is not a linear transformation — it is an [[affine transformation]] — as a 4×4 affine transformation matrix, it can be expressed as follows (assuming the normal is a unit vector): <math display="block">\begin{bmatrix} x' \\ y' \\ z' \\ 1 \end{bmatrix} = \begin{bmatrix} 1 - 2 a^2 & - 2 a b & - 2 a c & - 2 a d \\ - 2 a b & 1 - 2 b^2 & - 2 b c & - 2 b d \\ - 2 a c & - 2 b c & 1 - 2c^2 & - 2 c d \\ 0 & 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix} </math> where <math>d = -\mathbf{p} \cdot \mathbf{N}</math> for some point <math>\mathbf{p}</math> on the plane, or equivalently, <math>ax + by + cz + d = 0</math>. If the 4th component of the vector is 0 instead of 1, then only the vector's direction is reflected and its magnitude remains unchanged, as if it were mirrored through a parallel plane that passes through the origin. This is a useful property as it allows the transformation of both positional vectors and normal vectors with the same matrix. See [[homogeneous coordinates]] and [[#Other kinds of transformations|affine transformations]] below for further explanation. ==Composing and inverting transformations== One of the main motivations for using matrices to represent linear transformations is that transformations can then be easily [[composition (functions)|composed]] and inverted. Composition is accomplished by [[matrix multiplication]]. [[Row and column vectors]] are operated upon by matrices, rows on the left and columns on the right. Since text reads from left to right, column vectors are preferred when transformation matrices are composed: If '''A''' and '''B''' are the matrices of two linear transformations, then the effect of first applying '''A''' and then '''B''' to a column vector <math>\mathbf{x}</math> is given by: <math display="block">\mathbf{B}(\mathbf{A} \mathbf x) = (\mathbf{BA}) \mathbf x.</math> In other words, the matrix of the combined transformation '''''A''' followed by '''B''''' is simply the product of the individual matrices. When '''A''' is an [[invertible matrix]] there is a matrix '''A'''<sup>−1</sup> that represents a transformation that "undoes" '''A''' since its composition with '''A''' is the [[identity matrix]]. In some practical applications, inversion can be computed using general inversion algorithms or by performing inverse operations (that have obvious geometric interpretation, like rotating in opposite direction) and then composing them in reverse order. Reflection matrices are a special case because [[Involutory matrix|they are their own inverses]] and don't need to be separately calculated. ==Other kinds of transformations== ===Affine transformations=== <!-- This section is linked from [[Affine transformation]] --> [[File:2D affine transformation matrix.svg|thumb|250px|right|Effect of applying various 2D affine transformation matrices on a unit square. Note that the reflection matrices are special cases of the scaling matrix.]] [[File:Affine transformations.ogv|thumb|250px|right|Affine transformations on the 2D plane can be performed in three dimensions. Translation is done by shearing parallel to the xy plane, and rotation is performed around the z axis.]] To represent [[affine transformation]]s with matrices, we can use [[homogeneous coordinates]]. This means representing a 2-vector (''x'', ''y'') as a 3-vector (''x'', ''y'', 1), and similarly for higher dimensions. Using this system, translation can be expressed with matrix multiplication. The functional form <math>x' = x + t_x; y' = y + t_y</math> becomes: <math display="block">\begin{bmatrix} x' \\ y' \\ 1 \end{bmatrix} = \begin{bmatrix} 1 & 0 & t_x \\ 0 & 1 & t_y \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \end{bmatrix}.</math> All ordinary linear transformations are included in the set of affine transformations, and can be described as a simplified form of affine transformations. Therefore, any linear transformation can also be represented by a general transformation matrix. The latter is obtained by expanding the corresponding linear transformation matrix by one row and column, filling the extra space with zeros except for the lower-right corner, which must be set to 1. For example, ''the '''counter-clockwise''' [[rotation matrix]] from above'' becomes: <math display="block">\begin{bmatrix} \cos \theta & -\sin \theta & 0 \\ \sin \theta & \cos \theta & 0 \\ 0 & 0 & 1 \end{bmatrix}</math> Using transformation matrices containing homogeneous coordinates, translations become linear, and thus can be seamlessly intermixed with all other types of transformations. The reason is that the real plane is mapped to the {{math|1=''w'' = 1}} plane in real projective space, and so translation in real [[Euclidean space]] can be represented as a shear in real projective space. Although a translation is a non-[[Linear map|linear transformation]] in a 2-D or 3-D Euclidean space described by Cartesian coordinates (i.e. it can't be combined with other transformations while preserving [[Commutative property|commutativity]] and other properties), it [[Translation (geometry)#Matrix representation|becomes]], in a 3-D or 4-D projective space described by homogeneous coordinates, a simple linear transformation (a [[Shear mapping|shear]]). More affine transformations can be obtained by [[Linear combination|composition]] of two or more affine transformations. For example, given a translation '''T'''' with vector <math>(t'_x, t'_y),</math> a rotation '''R''' by an angle θ '''counter-clockwise''', a scaling '''S''' with factors <math>(s_x, s_y)</math> and a translation '''T''' of vector <math>(t_x, t_y),</math> the result '''M''' of '''T'RST''' is:<ref>{{cite web |url = http://totologic.blogspot.com/2015/02/2d-transformation-matrices-baking.html |title = 2D transformation matrices baking |author = Cédric Jules |date = February 25, 2015 }}</ref> <math display="block">\begin{bmatrix} s_x \cos \theta & - s_y \sin \theta & t_x s_x \cos \theta - t_y s_y \sin \theta + t'_x \\ s_x \sin \theta & s_y \cos \theta & t_x s_x \sin \theta + t_y s_y \cos \theta + t'_y \\ 0 & 0 & 1 \end{bmatrix}</math> When using affine transformations, the homogeneous component of a coordinate vector (normally called ''w'') will never be altered. One can therefore safely assume that it is always 1 and ignore it. However, this is not true when using perspective projections. ===Perspective projection=== {{main|Perspective projection}} {{further|Pinhole camera model}} [[File:Perspective transformation matrix 2D.svg|thumb|Comparison of the effects of applying 2D affine and perspective transformation matrices on a unit square.]] Another type of transformation, of importance in [[3D computer graphics]], is the [[perspective projection]]. Whereas parallel projections are used to project points onto the image plane along parallel lines, the perspective projection projects points onto the image plane along lines that emanate from a single point, called the center of projection. This means that an object has a smaller projection when it is far away from the center of projection and a larger projection when it is closer (see also [[Multiplicative inverse|reciprocal function]]). The simplest perspective projection uses the origin as the center of projection, and the plane at <math>z = 1</math> as the image plane. The functional form of this transformation is then <math>x' = x / z</math>; <math>y' = y / z</math>. We can express this in [[homogeneous coordinates]] as: <math display="block">\begin{bmatrix} x_c \\ y_c \\ z_c \\ w_c \end{bmatrix} = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 1 & 0 \end{bmatrix} \begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix}=\begin{bmatrix} x \\ y \\ z \\ z \end{bmatrix} </math> After carrying out the [[matrix multiplication]], the homogeneous component <math>w_c</math> will be equal to the value of <math>z</math> and the other three will not change. Therefore, to map back into the real plane we must perform the '''homogeneous divide''' or '''perspective divide''' by dividing each component by <math>w_c</math>: <math display="block">\begin{bmatrix} x' \\ y' \\ z' \\ 1 \end{bmatrix} = \frac{1}{w_c} \begin{bmatrix} x_c \\ y_c \\ z_c \\ w_c \end{bmatrix}=\begin{bmatrix} x / z \\ y / z \\ 1 \\ 1 \end{bmatrix}</math> More complicated perspective projections can be composed by combining this one with rotations, scales, translations, and shears to move the image plane and center of projection wherever they are desired. ==See also== * [[3D projection]] * [[Change of basis]] * [[Image rectification]] * [[Pose (computer vision)]] * [[Rigid transformation]] * [[Transformation (function)]] * [[Transformation geometry]] ==References== {{Reflist}} ==External links== * [https://web.archive.org/web/20091027131421/http://geocities.com/evilsnack/matrix.htm The Matrix Page] Practical examples in [[POV-Ray]] * [http://mathworld.wolfram.com/RotationMatrix.html Reference page] - Rotation of axes * [http://www.idomaths.com/linear_transformation.php Linear Transformation Calculator] * [http://www.wiley.com/legacy/products/subject/life/biological_anthropology/0471205079_virtual_reconstruction/chapter5_trafo.html Transformation Applet] - Generate matrices from 2D transformations and vice versa. * [http://www.miniphysics.com/coordinate-transformation-under-rotation.html Coordinate transformation under rotation in 2D] * [https://web.archive.org/web/20180803163544/https://www.microsoft.com/en-us/microsoft-365/blog/2015/02/18/excel-fun-build-3d-graphics-spreadsheet/ Excel Fun - Build 3D graphics from a spreadsheet] {{Linear algebra}} {{Matrix classes}} [[Category:Computer graphics]] [[Category:Matrices (mathematics)]] [[Category:Transformation (function)]] [[Category:Articles containing video clips]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Cite book
(
edit
)
Template:Cite web
(
edit
)
Template:Further
(
edit
)
Template:Linear algebra
(
edit
)
Template:Main
(
edit
)
Template:Math
(
edit
)
Template:Matrix classes
(
edit
)
Template:Mvar
(
edit
)
Template:Navbox
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Use American English
(
edit
)