LMatrix4f

from panda3d.core import LMatrix4f
class LMatrix4f

Bases:

This is a 4-by-4 transform matrix.

Inheritance diagram

Inheritance diagram of LMatrix4f

class CRow

Bases:

__getitem__(i: int) → float
__init__(param0: CRow)
static size() → int

Returns 4: the number of columns of a LMatrix4.

class Row

Bases:

These helper classes are used to support two-level operator [].

__getitem__(i: int, assign_val: float)
__getitem__(i: int) → float
__init__(param0: Row)
static size() → int

Returns 4: the number of columns of a LMatrix4.

__call__(row: int, col: int)
__call__(row: int, col: int) → float
__div__(scalar: float) → LMatrix4f
__eq__(other: LMatrix4f) → bool
__getitem__(i: int) → Row
__getitem__(i: int) → CRow
__iadd__(other: LMatrix4f) → LMatrix4f

Performs a memberwise addition between two matrices.

__idiv__(scalar: float) → LMatrix4f
__imul__(other: LMatrix4f) → LMatrix4f
__imul__(scalar: float) → LMatrix4f
__init__()
__init__(upper3: LMatrix3f)

Construct a 4x4 matrix given a 3x3 rotation matrix and an optional translation component.

__init__(upper3: LMatrix3f, trans: LVecBase3f)
__init__(other: LMatrix4f)
__init__(param0: LVecBase4f, param1: LVecBase4f, param2: LVecBase4f, param3: LVecBase4f)

Constructs the matrix from four individual rows.

__init__(other: UnalignedLMatrix4f)
__init__(param0: float, param1: float, param2: float, param3: float, param4: float, param5: float, param6: float, param7: float, param8: float, param9: float, param10: float, param11: float, param12: float, param13: float, param14: float, param15: float)
__isub__(other: LMatrix4f) → LMatrix4f

Performs a memberwise subtraction between two matrices.

__lt__(other: LMatrix4f) → bool
__mul__(other: LMatrix4f) → LMatrix4f
__mul__(scalar: float) → LMatrix4f
__ne__(other: LMatrix4f) → bool
__reduce__() → object
__repr__() → str
accumulate(other: LMatrix4f, weight: float)

Computes (*this) += other * weight.

addHash(hash: int) → int

Adds the vector into the running hash.

addHash(hash: int, threshold: float) → int

Adds the vector into the running hash.

almostEqual(other: LMatrix4f) → bool

Returns true if two matrices are memberwise equal within a default tolerance based on the numeric type.

almostEqual(other: LMatrix4f, threshold: float) → bool

Returns true if two matrices are memberwise equal within a specified tolerance. This is faster than the equivalence operator as this doesn’t have to guarantee that it is transitive.

assign(other: LMatrix4f) → LMatrix4f
assign(other: UnalignedLMatrix4f) → LMatrix4f
assign(fill_value: float) → LMatrix4f
begin()

Returns an iterator that may be used to traverse the elements of the matrix, STL-style.

begin()

Returns an iterator that may be used to traverse the elements of the matrix, STL-style.

property cols → Sequence[LVecBase4f]
Getter

Retrieves the indicated column of the matrix as a 4-component vector.

Setter

Replaces the indicated column of the matrix.

Replaces the indicated column of the matrix with the indicated 3-component vector, ignoring the last row.

compareTo(other: LMatrix4f) → int

This flavor of compareTo() uses a default threshold value based on the numeric type.

compareTo(other: LMatrix4f, threshold: float) → int

Sorts matrices lexicographically, componentwise. Returns a number less than 0 if this matrix sorts before the other one, greater than zero if it sorts after, 0 if they are equivalent (within the indicated tolerance).

componentwiseMult(other: LMatrix4f)
static convertMat(from: CoordinateSystem, to: CoordinateSystem) → LMatrix4f

Returns a matrix that transforms from the indicated coordinate system to the indicated coordinate system.

end()

Returns an iterator that may be used to traverse the elements of the matrix, STL-style.

end()

Returns an iterator that may be used to traverse the elements of the matrix, STL-style.

fill(fill_value: float)

Sets each element of the matrix to the indicated fill_value. This is of questionable value, but is sometimes useful when initializing to zero.

generateHash(hashgen: ChecksumHashGenerator)

Adds the vector to the indicated hash generator.

generateHash(hashgen: ChecksumHashGenerator, scale: float)

Adds the vector to the indicated hash generator.

getCell(row: int, col: int) → float

Returns a particular element of the matrix.

static getClassType() → TypeHandle
getCol(col: int) → LVecBase4f

Retrieves the indicated column of the matrix as a 4-component vector.

getCol3(col: int) → LVecBase3f

Retrieves the indicated column of the matrix as a 3-component vector, ignoring the last row.

getCols() → list
getData()

Returns the address of the first of the nine data elements in the matrix. The remaining elements occupy the next eight positions in row-major order.

getHash() → int

Returns a suitable hash for phash_map.

getHash(threshold: float) → int

Returns a suitable hash for phash_map.

getNumComponents() → int

Returns the number of elements in the matrix, 16.

getRow(result_vec: LVecBase4f, row: int)

Stores the indicated row of the matrix as a 4-component vector.

getRow(row: int) → LVecBase4f

Retrieves the indicated row of the matrix as a 4-component vector.

getRow3(result_vec: LVecBase3f, row: int)

Stores the row column of the matrix as a 3-component vector, ignoring the last column.

getRow3(row: int) → LVecBase3f

Retrieves the row column of the matrix as a 3-component vector, ignoring the last column.

getRow3s() → list
getRows() → list
getUpper3() → LMatrix3f

Retrieves the upper 3x3 submatrix.

static identMat() → LMatrix4f

Returns an identity matrix.

This function definition must appear first, since some inline functions below take advantage of it.

invertAffineFrom(other: LMatrix4f) → bool

bugbug: we could optimize this for rotationscaletranslation matrices (transpose upper 3x3 and take negative of translation component)

invertFrom(other: LMatrix4f) → bool

Computes the inverse of the other matrix, and stores the result in this matrix. This is a fully general operation and makes no assumptions about the type of transform represented by the matrix.

The other matrix must be a different object than this matrix. However, if you need to invert a matrix in place, see invertInPlace().

The return value is true if the matrix was successfully inverted, false if the was a singularity.

invertInPlace() → bool

Inverts the current matrix. Returns true if the inverse is successful, false if the matrix was singular.

isIdentity() → bool

Returns true if this is (close enough to) the identity matrix, false otherwise.

isNan() → bool

Returns true if any component of the matrix is not-a-number, false otherwise.

multiply(other1: LMatrix4f, other2: LMatrix4f)

this = other1 * other2

static onesMat() → LMatrix4f

Returns an matrix filled with ones.

operatorNew(size: int)
output(out: ostream)
readDatagram(source: DatagramIterator)

Reads the matrix from the Datagram using get_stdfloat().

readDatagramFixed(scan: DatagramIterator)

Reads the matrix from the Datagram using get_float32() or get_float64(). See writeDatagramFixed().

static rotateMat(angle: float, axis: LVecBase3f, cs: CoordinateSystem) → LMatrix4f

Returns a matrix that rotates by the given angle in degrees counterclockwise about the indicated vector.

static rotateMatNormaxis(angle: float, axis: LVecBase3f, cs: CoordinateSystem) → LMatrix4f

Returns a matrix that rotates by the given angle in degrees counterclockwise about the indicated vector. Assumes axis has been prenormalized.

property rows → Sequence[LVecBase4f]
Getter

these versions inline better

Retrieves the indicated row of the matrix as a 4-component vector.

Stores the indicated row of the matrix as a 4-component vector.

Setter

Replaces the indicated row of the matrix.

Replaces the indicated row of the matrix with the indicated 3-component vector, ignoring the last column.

static scaleMat(scale: LVecBase3f) → LMatrix4f

Returns a matrix that applies the indicated scale in each of the three axes.

static scaleMat(scale: float) → LMatrix4f

Returns a matrix that applies the indicated uniform scale.

static scaleMat(sx: float, sy: float, sz: float) → LMatrix4f

Returns a matrix that applies the indicated scale in each of the three axes.

static scaleShearMat(scale: LVecBase3f, shear: LVecBase3f, cs: CoordinateSystem) → LMatrix4f

Returns a matrix that applies the indicated scale and shear.

static scaleShearMat(sx: float, sy: float, sz: float, shxy: float, shxz: float, shyz: float, cs: CoordinateSystem) → LMatrix4f

Returns a matrix that applies the indicated scale and shear.

set(e00: float, e01: float, e02: float, e03: float, e10: float, e11: float, e12: float, e13: float, e20: float, e21: float, e22: float, e23: float, e30: float, e31: float, e32: float, e33: float)
setCell(row: int, col: int, value: float)

Changes a particular element of the matrix.

setCol(col: int, v: LVecBase3f)

Replaces the indicated column of the matrix with the indicated 3-component vector, ignoring the last row.

setCol(col: int, v: LVecBase4f)

Replaces the indicated column of the matrix.

setRotateMat(angle: float, axis: LVecBase3f, cs: CoordinateSystem)

Sets mat to a matrix that rotates by the given angle in degrees counterclockwise about the indicated vector.

setRotateMatNormaxis(angle: float, axis: LVecBase3f, cs: CoordinateSystem)

Fills mat with a matrix that rotates by the given angle in degrees counterclockwise about the indicated vector. Assumes axis has been prenormalized.

setRow(row: int, v: LVecBase3f)

Replaces the indicated row of the matrix with the indicated 3-component vector, ignoring the last column.

setRow(row: int, v: LVecBase4f)

Replaces the indicated row of the matrix.

setScaleMat(scale: LVecBase3f)

Fills mat with a matrix that applies the indicated scale in each of the three axes.

setScaleShearMat(scale: LVecBase3f, shear: LVecBase3f, cs: CoordinateSystem)

Fills mat with a matrix that applies the indicated scale and shear.

setShearMat(shear: LVecBase3f, cs: CoordinateSystem)

Fills mat with a matrix that applies the indicated shear in each of the three planes.

setTranslateMat(trans: LVecBase3f)

Fills mat with a matrix that applies the indicated translation.

setUpper3(upper3: LMatrix3f)

Get and set the upper 3x3 rotation matrix.

static shearMat(shear: LVecBase3f, cs: CoordinateSystem) → LMatrix4f

Returns a matrix that applies the indicated shear in each of the three planes.

static shearMat(shxy: float, shxz: float, shyz: float, cs: CoordinateSystem) → LMatrix4f

Returns a matrix that applies the indicated shear in each of the three planes.

static size() → int

Returns 4: the number of rows of a LMatrix4.

static translateMat(trans: LVecBase3f) → LMatrix4f

Returns a matrix that applies the indicated translation.

static translateMat(tx: float, ty: float, tz: float) → LMatrix4f

Returns a matrix that applies the indicated translation.

transposeFrom(other: LMatrix4f)
transposeInPlace()
write(out: ostream, indent_level: int)
writeDatagram(destination: Datagram)

Writes the matrix to the Datagram using add_stdfloat(). This is appropriate when you want to write the matrix using the standard width setting, especially when you are writing a bam file.

writeDatagramFixed(destination: Datagram)

Writes the matrix to the Datagram using add_float32() or add_float64(), depending on the type of floats in the matrix, regardless of the setting of Datagram.setStdfloatDouble(). This is appropriate when you want to write a fixed-width value to the datagram, especially when you are not writing a bam file.

xform(v: LVecBase4f) → LVecBase4f

4-component vector or point times matrix. This is a fully general operation.

xformInPlace(v: LVecBase4f)

4-component vector or point times matrix. This is a fully general operation.

xformPoint(v: LVecBase3f) → LVecBase3f

The matrix transforms a 3-component point (including translation component) and returns the result. This assumes the matrix is an affine transform.

xformPointGeneral(v: LVecBase3f) → LVecBase3f

The matrix transforms a 3-component point (including translation component) and returns the result, as a fully general operation.

xformPointGeneralInPlace(v: LVecBase3f)

The matrix transforms a 3-component point (including translation component), as a fully general operation.

xformPointInPlace(v: LVecBase3f)

The matrix transforms a 3-component point (including translation component). This assumes the matrix is an affine transform.

xformVec(v: LVecBase3f) → LVecBase3f

The matrix transforms a 3-component vector (without translation component) and returns the result. This assumes the matrix is an orthonormal transform.

xformVecGeneral(v: LVecBase3f) → LVecBase3f

The matrix transforms a 3-component vector (without translation component) and returns the result, as a fully general operation.

xformVecGeneralInPlace(v: LVecBase3f)

The matrix transforms a 3-component vector (without translation component), as a fully general operation.

xformVecInPlace(v: LVecBase3f)

The matrix transforms a 3-component vector (without translation component). This assumes the matrix is an orthonormal transform.

static yToZUpMat() → LMatrix4f

Returns a matrix that transforms from the Y-up coordinate system to the Z-up coordinate system.

static zToYUpMat() → LMatrix4f

Returns a matrix that transforms from the Y-up coordinate system to the Z-up coordinate system.

static zerosMat() → LMatrix4f

Returns an matrix filled with zeros.