ApplyMatrix Command

ApplyMatrix( <Matrix>, <Object> )

Transforms the object O so that point P of O is mapped to:

  • point M*P, if P is a 2D point and M is a 2 x 2 matrix

  • point project(M*(x(P), y(P), 1)), if P is a 2D point and M a 3 x 3 matrix: project is a projection, mapping point (x, y, z) to (x/z, y/z).

  • point M*P, if P is a 3D point and M a 3 x 3 matrix

  • point N*P, if P is a 3D point and M a 2 x 2 matrix: the matrix N is the completion or order 3 of M: given M = \(\begin{pmatrix}a&b\\ c&d \end{pmatrix}\) then N = \(\begin{pmatrix}a&b&0\\ c&d&0\\0&0&1 \end{pmatrix}\)

Let M={{cos(π/2),-sin(π/2)}, {sin(π/2), cos(π/2)}} be the transformation matrix and u = (2,1) a given vector (object). ApplyMatrix(M,u) yields the vector u'=(-1,2), i.e. the result of a mathematically positive rotation by 90° of vector u.

Let M={{1,1,0},{0,1,1},{1,0,1}} be a matrix and u=(2,1) a given vector. ApplyMatrix(M,u) yields vector u'=(1,0.67). In effect \(\begin{pmatrix}1&1&0\\ 0&1&1\\1&0&1 \end{pmatrix}\) \(\begin{pmatrix}2\\ 1\\1 \end{pmatrix}\) = \(\begin{pmatrix}3\\ 2\\3 \end{pmatrix}\), and (3/3 = 1, 2/3 ≈ 0.67) (rounding to 2 decimal places)

This command also works with quadrics and images: it will return "undefined" when the determinant of the transformation matrix is 0.