This is the Matrix export class Base.Matrix class.\n A 4x4 Matrix. In particular, this matrix can represent an affine transformation, that is, given a 3D vector `x`, apply the transformation y = M*x + 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).\n The following constructors are supported:\n Matrix() Empty constructor.\n Matrix(matrix) Copy constructor. matrix : Base.Matrix.\n Matrix(*coef) Define from 16 coefficients of the 4x4 matrix. coef : sequence of float\n The sequence can have up to 16 elements which complete the matrix by rows.\n 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\n Default to (0,0,0). Optional. move(vector) -> None move(x, y, z) -> None\n Move the matrix along a vector, equivalent to left multiply the matrix by a pure translation transformation.\n vector : Base.Vector, tuple x : float\n `x` translation. y : float\n `y` translation. z : float\n `z` translation. scale(vector) -> None scale(x, y, z) -> None scale(factor) -> None\n Scale the first three rows of the matrix.\n vector : Base.Vector x : float\n First row factor scale. y : float\n Second row factor scale. z : float\n Third row factor scale. factor : float\n global factor scale. hasScale(tol=0) -> ScaleType\n Return an enum value of ScaleType. Possible values are: Uniform, NonUniformLeft, NonUniformRight, NoScaling or Other if it's not a scale matrix.\n tol : float nullify() -> None\n Make this the null matrix. isNull() -> bool\n Check if this is the null matrix. unity() -> None\n Make this matrix to unity (4D identity matrix). isUnity() -> bool\n Check if this is the unit matrix (4D identity matrix). transform(vector, matrix2) -> None\n Transform the matrix around a given point. Equivalent to left multiply the matrix by T*M*T_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`.\n vector : Base.Vector matrix2 : Base.Matrix col(index) -> Base.Vector\n Return the vector of a column, that is, the vector generated by the three first elements of the specified column.\n index : int\n Required column index. setCol(index, vector) -> None\n Set the vector of a column, that is, the three first elements of the specified column by index.\n index : int\n Required column index. vector : Base.Vector row(index) -> Base.Vector\n Return the vector of a row, that is, the vector generated by the three first elements of the specified row.\n index : int\n Required row index. setRow(index, vector) -> None\n Set the vector of a row, that is, the three first elements of the specified row by index.\n index : int\n Required row index. vector : Base.Vector trace() -> Base.Vector\n Return the diagonal of the 3x3 leading principal submatrix as vector. setTrace(vector) -> None\n Set the diagonal of the 3x3 leading principal submatrix.\n vector : Base.Vector rotateX(angle) -> None\n Rotate around X axis.\n angle : float\n Angle in radians. rotateY(angle) -> None\n Rotate around Y axis.\n angle : float\n Angle in radians. rotateZ(angle) -> None\n Rotate around Z axis.\n angle : float\n Angle in radians. multiply(matrix) -> Base.Matrix multiply(vector) -> Base.Vector\n Right multiply the matrix by the given object. If the argument is a vector, this is augmented to the 4D vector (`vector`, 1).\n matrix : Base.Matrix vector : Base.Vector multVec(vector) -> Base.Vector\n Compute the transformed vector using the matrix.\n vector : Base.Vector invert() -> None\n Compute the inverse matrix in-place, if possible. inverse() -> Base.Matrix\n Compute the inverse matrix, if possible. transpose() -> None\n Transpose the matrix in-place. transposed() -> Base.Matrix\n Returns a transposed copy of this matrix. determinant() -> float\n Compute the determinant of the matrix. isOrthogonal(tol=1e-6) -> float\n 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.\n tol : float\n Tolerance used to check orthogonality. submatrix(dim) -> Base.Matrix\n Get the leading principal submatrix of the given dimension. The (4 - `dim`) remaining dimensions are completed with the corresponding identity matrix.\n dim : int\n Dimension parameter must be in the range [1,4]. analyze() -> str\n Analyzes the type of transformation. The (1,1) matrix element. The (1,2) matrix element. The (1,3) matrix element. The (1,4) matrix element. The (2,1) matrix element. The (2,2) matrix element. The (2,3) matrix element. The (2,4) matrix element. The (3,1) matrix element. The (3,2) matrix element. The (3,3) matrix element. The (3,4) matrix element. The (4,1) matrix element. The (4,2) matrix element. The (4,3) matrix element. The (4,4) matrix element. The matrix elements. public: MatrixPy(const Matrix4D & mat, PyTypeObject *T = &Type) :PyObjectBase(new Matrix4D(mat),T){} Matrix4D value() const { return *(getMatrixPtr()); }