# Matrix functions¶

## Matrix33¶

3x3 Matrix which supports rotation, translation, scale and skew.

Matrices are laid out in row-major format and can be loaded directly into OpenGL. To convert to column-major format, transpose the array using the numpy.array.T method.

`pyrr.matrix33.``apply_to_vector`(*args, **kwargs)

Apply a matrix to a vector.

The matrix’s rotation are applied to the vector. Supports multiple matrices and vectors.

Parameters: mat (numpy.array) – The rotation / translation matrix. Can be a list of matrices. vec (numpy.array) – The vector to modify. Can be a list of vectors. numpy.array The vectors rotated by the specified matrix.
`pyrr.matrix33.``create_direction_scale`(direction, scale)

Creates a matrix which can apply a directional scaling to a set of vectors.

An example usage for this is to flatten a mesh against a single plane.

Parameters: direction (numpy.array) – a numpy.array of shape (3,) of the direction to scale. scale (float) – a float value for the scaling along the specified direction. A scale of 0.0 will flatten the vertices into a single plane with the direction being the plane’s normal. numpy.array The scaling matrix.
`pyrr.matrix33.``create_from_axis_rotation`(*args, **kwargs)

Creates a matrix from the specified theta rotation around an axis.

Parameters: axis (numpy.array) – A (3,) vector specifying the axis of rotation. theta (float) – A rotation speicified in radians. numpy.array A matrix with shape (3,3).
`pyrr.matrix33.``create_from_eulers`(*args, **kwargs)

Creates a matrix from the specified Euler rotations.

Parameters: eulers (numpy.array) – A set of euler rotations in the format specified by the euler modules. numpy.array A matrix with shape (3,3) with the euler’s rotation.
`pyrr.matrix33.``create_from_inverse_of_quaternion`(*args, **kwargs)

Creates a matrix with the inverse rotation of a quaternion.

Parameters: quat (numpy.array) – The quaternion to make the matrix from (shape 4). numpy.array A matrix with shape (3,3) that respresents the inverse of the quaternion.
`pyrr.matrix33.``create_from_matrix44`(mat, dtype=None)

Creates a Matrix33 from a Matrix44.

Return type: numpy.array A matrix with shape (3,3) with the input matrix rotation.
`pyrr.matrix33.``create_from_quaternion`(*args, **kwargs)

Creates a matrix with the same rotation as a quaternion.

Parameters: quat – The quaternion to create the matrix from. numpy.array A matrix with shape (3,3) with the quaternion’s rotation.
`pyrr.matrix33.``create_from_scale`(scale, dtype=None)

Creates an identity matrix with the scale set.

Parameters: scale (numpy.array) – The scale to apply as a vector (shape 3). numpy.array A matrix with shape (3,3) with the scale set to the specified vector.
`pyrr.matrix33.``create_from_x_rotation`(theta, dtype=None)

Creates a matrix with the specified rotation about the X axis.

Parameters: theta (float) – The rotation, in radians, about the X-axis. numpy.array A matrix with the shape (3,3) with the specified rotation about the X-axis.
`pyrr.matrix33.``create_from_y_rotation`(theta, dtype=None)

Creates a matrix with the specified rotation about the Y axis.

Parameters: theta (float) – The rotation, in radians, about the Y-axis. numpy.array A matrix with the shape (3,3) with the specified rotation about the Y-axis.
`pyrr.matrix33.``create_from_z_rotation`(theta, dtype=None)

Creates a matrix with the specified rotation about the Z axis.

Parameters: theta (float) – The rotation, in radians, about the Z-axis. numpy.array A matrix with the shape (3,3) with the specified rotation about the Z-axis.
`pyrr.matrix33.``create_identity`(dtype=None)

Creates a new matrix33 and sets it to an identity matrix.

Return type: numpy.array A matrix representing an identity matrix with shape (3,3).
`pyrr.matrix33.``inverse`(mat)

Returns the inverse of the matrix.

This is essentially a wrapper around numpy.linalg.inv.

Parameters: m (numpy.array) – A matrix. numpy.array The inverse of the specified matrix.
`pyrr.matrix33.``multiply`(m1, m2)

Multiply two matricies, m1 . m2.

This is essentially a wrapper around numpy.dot( m1, m2 )

Parameters: m1 (numpy.array) – The first matrix. Can be a list of matrices. m2 (numpy.array) – The second matrix. Can be a list of matrices. numpy.array A matrix that results from multiplying m1 by m2.

## Matrix44¶

4x4 Matrix which supports rotation, translation, scale and skew.

Matrices are laid out in row-major format and can be loaded directly into OpenGL. To convert to column-major format, transpose the array using the numpy.array.T method.

`pyrr.matrix44.``apply_to_vector`(*args, **kwargs)

Apply a matrix to a vector.

The matrix’s rotation and translation are applied to the vector. Supports multiple matrices and vectors.

Parameters: mat (numpy.array) – The rotation / translation matrix. Can be a list of matrices. vec (numpy.array) – The vector to modify. Can be a list of vectors. numpy.array The vectors rotated by the specified matrix.
`pyrr.matrix44.``create_from_axis_rotation`(*args, **kwargs)

Creates a matrix from the specified rotation theta around an axis.

Parameters: axis (numpy.array) – A (3,) vector. theta (float) – A rotation in radians. numpy.array A matrix with shape (4,4).
`pyrr.matrix44.``create_from_eulers`(*args, **kwargs)

Creates a matrix from the specified Euler rotations.

Parameters: eulers (numpy.array) – A set of euler rotations in the format specified by the euler modules. numpy.array A matrix with shape (4,4) with the euler’s rotation.
`pyrr.matrix44.``create_from_inverse_of_quaternion`(*args, **kwargs)

Creates a matrix with the inverse rotation of a quaternion.

This can be used to go from object space to intertial space.

Parameters: quat (numpy.array) – The quaternion to make the matrix from (shape 4). numpy.array A matrix with shape (4,4) that respresents the inverse of the quaternion.
`pyrr.matrix44.``create_from_matrix33`(mat, dtype=None)

Creates a Matrix44 from a Matrix33.

The translation will be 0,0,0.

Return type: numpy.array A matrix with shape (4,4) with the input matrix rotation.
`pyrr.matrix44.``create_from_quaternion`(*args, **kwargs)

Creates a matrix with the same rotation as a quaternion.

Parameters: quat – The quaternion to create the matrix from. numpy.array A matrix with shape (4,4) with the quaternion’s rotation.
`pyrr.matrix44.``create_from_scale`(scale, dtype=None)

Creates an identity matrix with the scale set.

Parameters: scale (numpy.array) – The scale to apply as a vector (shape 3). numpy.array A matrix with shape (4,4) with the scale set to the specified vector.
`pyrr.matrix44.``create_from_translation`(*args, **kwargs)

Creates an identity matrix with the translation set.

Parameters: vec (numpy.array) – The translation vector (shape 3 or 4). numpy.array A matrix with shape (4,4) that represents a matrix with the translation set to the specified vector.
`pyrr.matrix44.``create_from_x_rotation`(theta, dtype=None)

Creates a matrix with the specified rotation about the X axis.

Parameters: theta (float) – The rotation, in radians, about the X-axis. numpy.array A matrix with the shape (4,4) with the specified rotation about the X-axis.
`pyrr.matrix44.``create_from_y_rotation`(theta, dtype=None)

Creates a matrix with the specified rotation about the Y axis.

Parameters: theta (float) – The rotation, in radians, about the Y-axis. numpy.array A matrix with the shape (4,4) with the specified rotation about the Y-axis.
`pyrr.matrix44.``create_from_z_rotation`(theta, dtype=None)

Creates a matrix with the specified rotation about the Z axis.

Parameters: theta (float) – The rotation, in radians, about the Z-axis. numpy.array A matrix with the shape (4,4) with the specified rotation about the Z-axis.
`pyrr.matrix44.``create_identity`(dtype=None)

Creates a new matrix44 and sets it to an identity matrix.

Return type: numpy.array A matrix representing an identity matrix with shape (4,4).
`pyrr.matrix44.``create_look_at`(eye, target, up, dtype=None)

Creates a look at matrix according to OpenGL standards.

Parameters: eye (numpy.array) – Position of the camera in world coordinates. target (numpy.array) – The position in world coordinates that the camera is looking at. up (numpy.array) – The up vector of the camera. numpy.array A look at matrix that can be used as a viewMatrix
`pyrr.matrix44.``create_matrix33_view`(mat)

Returns a view into the matrix in Matrix33 format.

This is different from matrix33.create_from_matrix44, in that changes to the returned matrix will also alter the original matrix.

Return type: numpy.array A view into the matrix in the format of a matrix33 (shape (3,3)).
`pyrr.matrix44.``create_orthogonal_projection`(left, right, bottom, top, near, far, dtype=None)

Creates an orthogonal projection matrix.

Parameters: left (float) – The left of the near plane relative to the plane’s centre. right (float) – The right of the near plane relative to the plane’s centre. top (float) – The top of the near plane relative to the plane’s centre. bottom (float) – The bottom of the near plane relative to the plane’s centre. near (float) – The distance of the near plane from the camera’s origin. It is recommended that the near plane is set to 1.0 or above to avoid rendering issues at close range. far (float) – The distance of the far plane from the camera’s origin. numpy.array A projection matrix representing the specified orthogonal perspective.
`pyrr.matrix44.``create_orthogonal_projection_matrix`(left, right, bottom, top, near, far, dtype=None)

Creates an orthogonal projection matrix.

Parameters: left (float) – The left of the near plane relative to the plane’s centre. right (float) – The right of the near plane relative to the plane’s centre. top (float) – The top of the near plane relative to the plane’s centre. bottom (float) – The bottom of the near plane relative to the plane’s centre. near (float) – The distance of the near plane from the camera’s origin. It is recommended that the near plane is set to 1.0 or above to avoid rendering issues at close range. far (float) – The distance of the far plane from the camera’s origin. numpy.array A projection matrix representing the specified orthogonal perspective.
`pyrr.matrix44.``create_perspective_projection`(fovy, aspect, near, far, dtype=None)

Creates perspective projection matrix.

Parameters: fovy (float) – field of view in y direction in degrees aspect (float) – aspect ratio of the view (width / height) near (float) – distance from the viewer to the near clipping plane (only positive) far (float) – distance from the viewer to the far clipping plane (only positive) numpy.array A projection matrix representing the specified perpective.
`pyrr.matrix44.``create_perspective_projection_from_bounds`(left, right, bottom, top, near, far, dtype=None)

Creates a perspective projection matrix using the specified near plane dimensions.

Parameters: left (float) – The left of the near plane relative to the plane’s centre. right (float) – The right of the near plane relative to the plane’s centre. top (float) – The top of the near plane relative to the plane’s centre. bottom (float) – The bottom of the near plane relative to the plane’s centre. near (float) – The distance of the near plane from the camera’s origin. It is recommended that the near plane is set to 1.0 or above to avoid rendering issues at close range. far (float) – The distance of the far plane from the camera’s origin. numpy.array A projection matrix representing the specified perspective.
`pyrr.matrix44.``create_perspective_projection_matrix`(fovy, aspect, near, far, dtype=None)

Creates perspective projection matrix.

Parameters: fovy (float) – field of view in y direction in degrees aspect (float) – aspect ratio of the view (width / height) near (float) – distance from the viewer to the near clipping plane (only positive) far (float) – distance from the viewer to the far clipping plane (only positive) numpy.array A projection matrix representing the specified perpective.
`pyrr.matrix44.``create_perspective_projection_matrix_from_bounds`(left, right, bottom, top, near, far, dtype=None)

Creates a perspective projection matrix using the specified near plane dimensions.

Parameters: left (float) – The left of the near plane relative to the plane’s centre. right (float) – The right of the near plane relative to the plane’s centre. top (float) – The top of the near plane relative to the plane’s centre. bottom (float) – The bottom of the near plane relative to the plane’s centre. near (float) – The distance of the near plane from the camera’s origin. It is recommended that the near plane is set to 1.0 or above to avoid rendering issues at close range. far (float) – The distance of the far plane from the camera’s origin. numpy.array A projection matrix representing the specified perspective.
`pyrr.matrix44.``decompose`(m)

Decomposes an affine transformation matrix into its scale, rotation and translation components.

Parameters: m (numpy.array) – A matrix. tuple (scale, rotation, translation) numpy.array scale vector3 numpy.array rotation quaternion numpy.array translation vector3
`pyrr.matrix44.``inverse`(m)

Returns the inverse of the matrix.

This is essentially a wrapper around numpy.linalg.inv.

Parameters: m (numpy.array) – A matrix. numpy.array The inverse of the specified matrix.
`pyrr.matrix44.``multiply`(m1, m2)

Multiply two matricies, m1 . m2.

This is essentially a wrapper around numpy.dot(m1, m2)

Parameters: m1 (numpy.array) – The first matrix. Can be a list of matrices. m2 (numpy.array) – The second matrix. Can be a list of matrices. numpy.array A matrix that results from multiplying m1 by m2.