c4d.Matrix

class c4d.Matrix

Warning

The Matrix type does not support the function copy.copy().

Instead use the Matrix constructor

import c4d

def main():
    if op is None:
        return

    mat = op.GetMg()
    print "Matrix:", id(mat), mat

    ref = mat
    print "Reference:", id(ref), ref

    copy = c4d.Matrix(mat)
    print "Copy:", id(copy), copy


if __name__=='__main__':
    main()

Attributes

Matrix.v1

The X axis of a left-handed coordinate system.

Type: Vector

Matrix.v2

The Y axis of a left-handed coordinate system.

Type: Vector

Matrix.v3

The Z axis of a left-handed coordinate system.

Type: Vector

Matrix.off

The translation vector.

Type: Vector

Methods Signatures

Matrix.__init__(self[, off, v1, v2, v3])

Initializes a new Matrix.

Matrix.__str__(self)

Returns the Matrix as string. Called if str() is wrapped around an instance of Matrix. (See __str__)

Matrix.__add__(self, other)

Adds two matrices.

Matrix.__sub__(self, other)

Subtracts two matrices.

Matrix.__mul__(self, other)

Multiplies a matrix or vector by the matrix. Can also scale each vector of the matrix by a scalar.

Matrix.__div__(self, other)

Divides each element in the matrix by a scalar.

Matrix.__invert__(self)

Inverts the matrix.

Matrix.__eq__(self, other)

Checks if two matrices are equal.

Matrix.__ne__(self, other)

Checks if two matrices are not equal.

Matrix.__ge__(self, other)

raise NotImplemented.

Matrix.__gt__(self, other)

raise NotImplemented.

Matrix.__le__(self, other)

raise NotImplemented.

Matrix.__lt__(self, other)

raise NotImplemented.

Matrix.Normalize(self)

Normalizes the matrix.

Matrix.GetNormalized(self)

Calculates the normalized matrix.

Matrix.Mul(self, v)

Multiply the vector by the matrix, this includes any translation in the matrix.

Matrix.MulV(self, v)

Multiply the vector by the matrix, this does not include any translation.

Matrix.GetTensorMatrix(self)

Returns the matrix’ tensor.

Matrix.Scale(self, v)

Performs uniform matrix scaling (float) or non-uniform matrix scaling (vector).

Matrix.GetScale(self)

Returns the scale stored by the matrix.

Methods Documentation

Matrix.__init__(self, off=Vector(0), v1=Vector(1, 0, 0), v2=Vector(0, 1, 0), v3=Vector(0, 0, 1))
Initializes a new Matrix.
All arguments are optional so it is possible to create a new matrix without any arguments. All components are simply set to:
  • off = Vector(0)

  • v1 = Vector(1,0,0)

  • v2 = Vector(0,1,0)

  • v3 = Vector(0,0,1)

mat = c4d.Matrix()
# => Matrix(v1: (1, 0, 0); v2: (0, 1, 0); v3: (0, 0, 1); off: (0, 0, 0))

mat = c4d.Matrix()
mat.off = c4d.Vector(100,0,0)

v1 = c4d.Vector(3)
v2 = c4d.Vector(12,4,9.3)
v3 = c4d.Vector(9,80,3)
off = c4d.Vector(v1+v2)
mat = c4d.Matrix(off,v1,v2,v3)
Parameters
  • off (c4d.Vector) – The translation vector.

  • v1 (c4d.Vector) – The X axis of a left-handed coordinate system.

  • v2 (c4d.Vector) – The Y axis of a left-handed coordinate system.

  • v3 (c4d.Vector) – The Z axis of a left-handed coordinate system.

Return type

c4d.Matrix

Returns

A new matrix.

Matrix.__str__(self)

Returns the Matrix as string. Called if str() is wrapped around an instance of Matrix. (See __str__)

v1 = c4d.Vector(3)
v2 = c4d.Vector(12,4,9.3)
v3 = c4d.Vector(9,80,3)
off = c4d.Vector(v1+v2)
mat = c4d.Matrix(off,v1,v2,v3)
print mat
# => Matrix(v1: (3, 3, 3); v2: (12, 4, 9.3); v3: (12, 4, 9.3); off: (15, 7, 12.3))
Return type

str

Returns

The Vector as string.

Matrix.__add__(self, other)

Adds two matrices.

Parameters

other (c4d.Matrix) – The other matrix.

Return type

c4d.Matrix

Returns

The result matrix.

Matrix.__sub__(self, other)

Subtracts two matrices.

Parameters

other (c4d.Matrix) – The other matrix.

Return type

c4d.Matrix

Returns

The result matrix.

Matrix.__mul__(self, other)
Multiplies a matrix or vector by the matrix. Can also scale each vector of the matrix by a scalar.

If both objects are of type Matrix, multiplies the left hand matrix by the right hand matrix.
If the left object is of type Matrix and the right one of type Vector, multiplies the vector by the matrix including any translation in the matrix.
If the left object is of type Vector and the right one of type Matrix, multiplies the vector by the matrix including any translation in the matrix.
If the right object is a number, multiplies each vector of the matrix by it.
Parameters

other (Union[c4d.Vector, int, float]) – The other argument.

Return type

c4d.Vector

Returns

The result matrix or vector.

Matrix.__div__(self, other)

Divides each element in the matrix by a scalar.

Parameters

other (float) – The scalar.

Return type

c4d.Matrix

Returns

The result matrix.

Matrix.__invert__(self)

Inverts the matrix.

Return type

c4d.Matrix

Returns

The inverted matrix.

Matrix.__eq__(self, other)

Checks if two matrices are equal.

Parameters

other (c4d.Matrix) – The other matrix.

Return type

bool

Returns

True if matrices are equal.

Matrix.__ne__(self, other)

Checks if two matrices are not equal.

Parameters

other (c4d.Matrix) – The other matrix.

Return type

bool

Returns

True if matrices are not equal.

Matrix.__ge__(self, other)

raise NotImplemented.

Matrix.__gt__(self, other)

raise NotImplemented.

Matrix.__le__(self, other)

raise NotImplemented.

Matrix.__lt__(self, other)

raise NotImplemented.

Matrix.Normalize(self)

Normalizes the matrix.

Matrix.GetNormalized(self)

Calculates the normalized matrix.

Return type

c4d.Matrix

Returns

The normalized matrix.

Matrix.Mul(self, v)

Multiply the vector by the matrix, this includes any translation in the matrix.

Parameters

v (c4d.Vector) – The vector to multiply.

Return type

c4d.Vector

Returns

The result vector.

Matrix.MulV(self, v)

Multiply the vector by the matrix, this does not include any translation.

Parameters

v (c4d.Vector) – The vector to multiply.

Return type

c4d.Vector

Returns

The result vector.

Matrix.GetTensorMatrix(self)

Returns the matrix’ tensor.

Return type

c4d.Matrix

Returns

The tensor matrix.

Matrix.Scale(self, v)

Performs uniform matrix scaling (float) or non-uniform matrix scaling (vector).

Parameters

v (Union[c4d.Vector, float]) – The scaling scalar.

Matrix.GetScale(self)

Returns the scale stored by the matrix.

Returns

The scale.

Return type

c4d.Vector