Skip to content

Latest commit

 

History

History
450 lines (211 loc) · 8.59 KB

Matrix_API.md

File metadata and controls

450 lines (211 loc) · 8.59 KB

Matrix API

Base.Matrix class.

A 4x4 Matrix. In particular, this matrix can represent an affine transformation, that is, given a 3D vector x, apply the transformation y = Mx + b, where the matrix M is a linear map and the vector b is a translation. y can be obtained using a linear transformation represented by the 4x4 matrix A conformed by the augmented 3x4 matrix (M|b), augmented by row with (0,0,0,1), therefore: (y, 1) = A(x, 1).

The following constructors are supported:

Matrix() Empty constructor.

Matrix(matrix) Copy constructor. matrix : Base.Matrix.

Matrix(*coef) Define from 16 coefficients of the 4x4 matrix. coef : sequence of float The sequence can have up to 16 elements which complete the matrix by rows.

Matrix(vector1, vector2, vector3, vector4) Define from four 3D vectors which represent the columns of the 3x4 submatrix, useful to represent an affine transformation. The fourth row is made up by (0,0,0,1). vector1 : Base.Vector vector2 : Base.Vector vector3 : Base.Vector vector4 : Base.Vector Default to (0,0,0). Optional.

A

The matrix elements.

A11

The (1,1) matrix element.

A12

The (1,2) matrix element.

A13

The (1,3) matrix element.

A14

The (1,4) matrix element.

A21

The (2,1) matrix element.

A22

The (2,2) matrix element.

A23

The (2,3) matrix element.

A24

The (2,4) matrix element.

A31

The (3,1) matrix element.

A32

The (3,2) matrix element.

A33

The (3,3) matrix element.

A34

The (3,4) matrix element.

A41

The (4,1) matrix element.

A42

The (4,2) matrix element.

A43

The (4,3) matrix element.

A44

The (4,4) matrix element.

analyze

analyze() -> str

Analyzes the type of transformation.

col

col(index) -> Base.Vector

Return the vector of a column, that is, the vector generated by the three first elements of the specified column.

index : int Required column index.

decompose

decompose() -> Base.Matrix, Base.Matrix, Base.Matrix, Base.Matrix\n Return a tuple of matrices representing shear, scale, rotation and move. So that matrix = move * rotation * scale * shear.

determinant

determinant() -> float

Compute the determinant of the matrix.

diagonal

diagonal() -> Base.Vector

Return the diagonal of the 3x3 leading principal submatrix as vector.

hasScale

hasScale(tol=0) -> ScaleType

Return an enum value of ScaleType. Possible values are: Uniform, NonUniformLeft, NonUniformRight, NoScaling or Other if it's not a scale matrix.

tol : float

inverse

inverse() -> Base.Matrix

Compute the inverse matrix, if possible.

invert

invert() -> None

Compute the inverse matrix in-place, if possible.

isNull

isNull() -> bool

Check if this is the null matrix.

isOrthogonal

isOrthogonal(tol=1e-6) -> float

Checks if the matrix is orthogonal, i.e. M * M^T = k*I and returns the multiple of the identity matrix. If it's not orthogonal 0 is returned.

tol : float Tolerance used to check orthogonality.

isUnity

isUnity([tol=0.0]) -> bool

Check if this is the unit matrix (4D identity matrix).

move

move(vector) -> None move(x, y, z) -> None

Move the matrix along a vector, equivalent to left multiply the matrix by a pure translation transformation.

vector : Base.Vector, tuple x : float x translation. y : float y translation. z : float z translation.

multVec

multVec(vector) -> Base.Vector

Compute the transformed vector using the matrix.

vector : Base.Vector

multiply

multiply(matrix) -> Base.Matrix multiply(vector) -> Base.Vector

Right multiply the matrix by the given object. If the argument is a vector, this is augmented to the 4D vector (vector, 1).

matrix : Base.Matrix vector : Base.Vector

nullify

nullify() -> None

Make this the null matrix.

rotateX

rotateX(angle) -> None

Rotate around X axis.

angle : float Angle in radians.

rotateY

rotateY(angle) -> None

Rotate around Y axis.

angle : float Angle in radians.

rotateZ

rotateZ(angle) -> None

Rotate around Z axis.

angle : float Angle in radians.

row

row(index) -> Base.Vector

Return the vector of a row, that is, the vector generated by the three first elements of the specified row.

index : int Required row index.

scale

scale(vector) -> None scale(x, y, z) -> None scale(factor) -> None

Scale the first three rows of the matrix.

vector : Base.Vector x : float First row factor scale. y : float Second row factor scale. z : float Third row factor scale. factor : float global factor scale.

setCol

setCol(index, vector) -> None

Set the vector of a column, that is, the three first elements of the specified column by index.

index : int Required column index. vector : Base.Vector

setDiagonal

setDiagonal(vector) -> None

Set the diagonal of the 3x3 leading principal submatrix.

vector : Base.Vector

setRow

setRow(index, vector) -> None

Set the vector of a row, that is, the three first elements of the specified row by index.

index : int Required row index. vector : Base.Vector

submatrix

submatrix(dim) -> Base.Matrix

Get the leading principal submatrix of the given dimension. The (4 - dim) remaining dimensions are completed with the corresponding identity matrix.

dim : int Dimension parameter must be in the range [1,4].

transform

transform(vector, matrix2) -> None

Transform the matrix around a given point. Equivalent to left multiply the matrix by TMT_inv, where M is matrix2, T the translation generated by vector and T_inv the inverse translation. For example, if matrix2 is a rotation, the result is the transformation generated by the current matrix followed by a rotation around the point represented by vector.

vector : Base.Vector matrix2 : Base.Matrix

transpose

transpose() -> None

Transpose the matrix in-place.

transposed

transposed() -> Base.Matrix

Returns a transposed copy of this matrix.

unity

unity() -> None

Make this matrix to unity (4D identity matrix).


documentation index > API > [Poweruser Documentation](Category_Poweruser Documentation.md) > Matrix API