Math#

class Matrix44(**kwds)#

4x4 orthonormal matrix for transformations.

This matrix class derives from list and is designed for 3D transformations and orientations. It provides methods to initialize the matrix from various properties like angles, origin, scale, etc.

small_zero#

Small threshold for zero value.

Type:

float

big_zero#

Large threshold for zero value.

Type:

float

identity#

4x4 identity matrix.

Type:

list

property angles#

The Euler angles (Body313) in radians.

copy()#

Create a copy of the matrix.

Returns:

A copy of the current matrix.

Return type:

Matrix44

divide(other)#

Divide the current matrix by another matrix.

Parameters:

other (Matrix44) – The matrix to divide by.

Returns:

The result of the division.

Return type:

Matrix44

getDeterminant()#

Compute the determinant of the current matrix.

Returns:

The determinant value.

Return type:

float

getEulerAngles(degrees=False)#

Retrieve the Z-X-Z Euler angles representing the matrix’s orientation.

Parameters:

degrees (bool, optional) – If True, returns angles in degrees. Defaults to False.

Returns:

List of three Euler angles.

Return type:

list[float]

getTranslation()#

Retrieve the translation part of the matrix.

Returns:

The translation part of the matrix.

Return type:

Point

invert()#

Return the inverse of the current matrix.

Returns:

Inverted matrix.

Return type:

Matrix44

isIdentity()#

Check if the matrix is an identity matrix.

Returns:

True if the matrix is an identity matrix, False otherwise.

Return type:

bool

property location#

Get or set the location (translation) part of the matrix.

Returns:

The translation part of the matrix.

Return type:

Point

multiply(other)#

Multiply the current matrix with another matrix, point, vector, or scalar.

Parameters:

other (Matrix44, Point, Vector, int, float) – The object to multiply with.

Returns:

The result of the multiplication.

Return type:

Matrix44

multiplyPoint(x, y=None, z=None)#

Multiply a point by the current matrix.

Parameters:
  • x (float or list[float]) – x-coordinate or a list/tuple containing x, y, and z coordinates.

  • y (float, optional) – y-coordinate. Defaults to None.

  • z (float, optional) – z-coordinate. Defaults to None.

Returns:

Transformed point.

Return type:

Point

multiplyVector(x, y=None, z=None)#

Multiply a vector by the current matrix.

Parameters:
  • x (float or list[float]) – x-coordinate or a list/tuple containing x, y, and z coordinates.

  • y (float, optional) – y-coordinate. Defaults to None.

  • z (float, optional) – z-coordinate. Defaults to None.

Returns:

Transformed vector.

Return type:

Vector

orientFromAxes(axes, dir1, dir2=(1, 0, 0))#

Align the specified axes of the matrix to the given vectors.

Parameters:
  • axes (str) – Specifies which axes to align. One of: ‘x’, ‘y’, ‘z’, ‘xy’, ‘xz’, ‘yx’, ‘yz’, ‘zx’, ‘zy’.

  • dir1 (list[float] or Vector) – Direction for the first axis.

  • dir2 (list[float] or Vector, optional) – Direction for the second axis. Defaults to [1,0,0].

Returns:

Updated matrix instance.

Return type:

Matrix44

orientFromEulerAngles(e1, e2=None, e3=None, degrees=False)#

Update the matrix orientation using the provided Euler angles.

Parameters:
  • e1 (float or list[float]) – First Euler angle or a list of all three Euler angles.

  • e2 (float, optional) – Second Euler angle. Defaults to None.

  • e3 (float, optional) – Third Euler angle. Defaults to None.

  • degrees (bool, optional) – If True, angles are in degrees. Defaults to False.

Returns:

Updated matrix instance.

Return type:

Matrix44

orientFromEulerParameters(e0, e1=None, e2=None, e3=None)#

Update the matrix orientation using the provided Euler parameters.

Parameters:
  • e0 (float or list[float]) – First Euler parameter or a list of all four parameters.

  • e1 (float, optional) – Second Euler parameter. Defaults to None.

  • e2 (float, optional) – Third Euler parameter. Defaults to None.

  • e3 (float, optional) – Fourth Euler parameter. Defaults to None.

Returns:

Updated matrix instance.

Return type:

Matrix44

property origin#

Get or set the location (translation) part of the matrix.

Returns:

The translation part of the matrix.

Return type:

Point

orthogonalize()#

Orthogonalize the matrix to ensure orthogonality of its axes.

This method ensures that the matrix axes are orthogonal and normal.

Returns:

Orthogonalized matrix.

Return type:

Matrix44

Raises:

RuntimeError – If the matrix cannot be orthogonalized.

pt(x, y=None, z=None)#

Multiply a point by the current matrix.

Parameters:
  • x (float or list[float]) – x-coordinate or a list/tuple containing x, y, and z coordinates.

  • y (float, optional) – y-coordinate. Defaults to None.

  • z (float, optional) – z-coordinate. Defaults to None.

Returns:

Transformed point.

Return type:

Point

pts(pts)#

Multiply a list of points by the current matrix.

Parameters:

pts (list[Point or list[float]]) – List of points or list of coordinates.

Returns:

List of transformed points.

Return type:

list[Point]

rotate(axis, angle, degrees=True)#

Return a matrix that rotates the current matrix around the specified axis by the given angle.

Parameters:
  • axis (str) – Axis to rotate around (‘x’, ‘y’, or ‘z’).

  • angle (float) – Angle of rotation.

  • degrees (bool, optional) – If True, the angle is in degrees. Defaults to True.

Returns:

Rotated matrix.

Return type:

Matrix44

rotx(angle, degrees=True)#

Return a matrix that rotates the current matrix around the X axis by the given angle.

Parameters:
  • angle (float) – Angle of rotation.

  • degrees (bool, optional) – If True, the angle is in degrees. Defaults to True.

Returns:

Rotated matrix.

Return type:

Matrix44

roty(angle, degrees=True)#

Return a matrix that rotates the current matrix around the Y axis by the given angle.

Parameters:
  • angle (float) – Angle of rotation.

  • degrees (bool, optional) – If True, the angle is in degrees. Defaults to True.

Returns:

Rotated matrix.

Return type:

Matrix44

rotz(angle, degrees=True)#

Return a matrix that rotates the current matrix around the Z axis by the given angle.

Parameters:
  • angle (float) – Angle of rotation.

  • degrees (bool, optional) – If True, the angle is in degrees. Defaults to True.

Returns:

Rotated matrix.

Return type:

Matrix44

scale(x, y=None, z=None)#

Return a matrix that scales the current matrix by the specified amount.

Parameters:
  • x (float) – Scale factor for x-axis or for all axes if y and z are not provided.

  • y (float, optional) – Scale factor for y-axis. Defaults to None.

  • z (float, optional) – Scale factor for z-axis. Defaults to None.

Returns:

Scaled matrix.

Return type:

Matrix44

setTranslation(x, y=None, z=None)#

Set the translation part of the matrix.

Parameters:
  • x (float or list[float]) – Translation for the x-axis or a list of translations for all three axes.

  • y (float, optional) – Translation for the y-axis. Defaults to None.

  • z (float, optional) – Translation for the z-axis. Defaults to None.

Returns:

Updated matrix instance.

Return type:

Matrix44

translate(x=0, y=None, z=None)#

Translate the matrix by the given distance along each axis.

Parameters:
  • x (float or list[float]) – Translation along the x-axis or a list of translations for all three axes.

  • y (float, optional) – Translation along the y-axis. Defaults to None.

  • z (float, optional) – Translation along the z-axis. Defaults to None.

Returns:

Updated matrix instance.

Return type:

Matrix44

transpose()#

Return the transpose of the current matrix.

Returns:

Transposed matrix.

Return type:

Matrix44

update(other)#

Update this matrix with another matrix.

This method is designed to update the current 4x4 matrix with values from another matrix. The input matrix can be either a 3x3 or a 4x4 matrix.

  • If a 3x3 matrix is provided, only the top-left 3x3 portion of the current matrix is updated.

  • If a 4x4 matrix is provided, the entire matrix is updated.

Parameters:

other (list of list) – Another matrix, either 3x3 or 4x4.

Returns:

Updated matrix.

Return type:

Matrix44

vec(x, y=None, z=None)#

Multiply a vector by the current matrix.

Parameters:
  • x (float or list[float]) – x-coordinate or a list/tuple containing x, y, and z coordinates.

  • y (float, optional) – y-coordinate. Defaults to None.

  • z (float, optional) – z-coordinate. Defaults to None.

Returns:

Transformed vector.

Return type:

Vector

property xaxis#

Retrieve the x-axis direction vector of the matrix.

Returns:

x-axis direction vector.

Return type:

Vector

property yaxis#

Retrieve the y-axis direction vector of the matrix.

Returns:

y-axis direction vector.

Return type:

Vector

property zaxis#

Retrieve the z-axis direction vector of the matrix.

Returns:

z-axis direction vector.

Return type:

Vector

zeroSmallValues(zero=1e-10)#

Return a copy of the current matrix with values less than a threshold set to 0.

Parameters:

zero (float, optional) – The threshold value below which matrix elements are set to 0. Defaults to 1e-10.

Returns:

Matrix with small values zeroed out.

Return type:

Matrix44

class Point(**kwds)#

3D point representing a location in space.

This class derives from Vector and represents a 3D point. It provides additional methods for operations like calculating midpoints, distances, and points along lines.

x#

X coordinate of the point.

Type:

float or ExprValue

y#

Y coordinate of the point.

Type:

float or ExprValue

z#

Z coordinate of the point.

Type:

float or ExprValue

along(towards, distance)#

Find a point along the line from the current point towards another point.

Parameters:
  • towards (Point or tuple) – Point towards which to move.

  • distance (float) – Distance to move along the line.

Returns:

Resultant point after moving the specified distance.

Return type:

Point

distance(x, y=None, z=None)#

Calculate the distance to another point.

Parameters:
  • x (float or ExprValue or tuple) – X coordinate or tuple containing all coordinates.

  • y (float or ExprValue, optional) – Y coordinate. Defaults to None.

  • z (float or ExprValue, optional) – Z coordinate. Defaults to None.

Returns:

Distance between the two points.

Return type:

float

distanceTo(x, y=None, z=None)#

Calculate the distance to another point.

Parameters:
  • x (float or ExprValue or tuple) – X coordinate or tuple containing all coordinates.

  • y (float or ExprValue, optional) – Y coordinate. Defaults to None.

  • z (float or ExprValue, optional) – Z coordinate. Defaults to None.

Returns:

Distance between the two points.

Return type:

float

distanceToPlane(a, b=None, c=None, d=None)#

Calculate the distance from the point to a parametric plane.

Parameters:
  • a (float or tuple) – A coefficient or tuple containing all coefficients (a, b, c, d) of the plane.

  • b (float, optional) – B coefficient. Defaults to None.

  • c (float, optional) – C coefficient. Defaults to None.

  • d (float, optional) – D coefficient. Defaults to None.

Returns:

Distance from the point to the plane.

Return type:

float

midpt(x, y=None, z=None)#

Calculate the midpoint between the current point and another point.

Parameters:
  • x (float or ExprValue or tuple) – X coordinate or tuple containing all coordinates.

  • y (float or ExprValue, optional) – Y coordinate. Defaults to None.

  • z (float or ExprValue, optional) – Z coordinate. Defaults to None.

Returns:

Midpoint between the two points.

Return type:

Point

static planeFromPoints(pt1, pt2, pt3)#

Determine the coefficients of a plane defined by three points.

Parameters:
  • pt1 (Point or tuple) – First point.

  • pt2 (Point or tuple) – Second point.

  • pt3 (Point or tuple) – Third point.

Returns:

Coefficients (a, b, c, d) of the plane equation ax + by + cz + d = 0.

Return type:

tuple

class Vector(**kwds)#

3D vector that supports various mathematical operations.

This class derives from list and represents a 3D vector and provides methods for operations like dot product, cross product, scaling, and normalization. The class is designed to handle both regular floats and symbolic expressions (ExprValue).

x#

X component of the vector.

Type:

float or ExprValue

y#

Y component of the vector.

Type:

float or ExprValue

z#

Z component of the vector.

Type:

float or ExprValue

angle(x, y=None, z=None, degrees=False)#

Calculate the angle between the vector and another vector.

Parameters:
  • x (float or ExprValue or tuple) – X component or tuple containing all components.

  • y (float or ExprValue, optional) – Y component. Defaults to None.

  • z (float or ExprValue, optional) – Z component. Defaults to None.

  • degrees (bool, optional) – If True, returns the angle in degrees. Defaults to False.

Returns:

Angle between the vectors in radians or degrees.

Return type:

float

asfloats()#

Convert the vector components to float values.

This method was added as a speed optimization when evaluating an entity position during simulations.

Returns:

A new vector with components converted to floats.

Return type:

Vector

close(x, y=None, z=None, tol=1e-07)#

Compare the vector with another one within a tolerance.

Parameters:
  • x (float or ExprValue or tuple) – X component or tuple containing all components.

  • y (float or ExprValue, optional) – Y component. Defaults to None.

  • z (float or ExprValue, optional) – Z component. Defaults to None.

  • tol (float, optional) – Tolerance value for comparison. Defaults to 1e-7.

Returns:

True if vectors are close, False otherwise.

Return type:

bool

copy()#

Create a copy of the current Vector instance.

Returns:

A copy of the current instance.

Return type:

Vector

cross(x, y=None, z=None)#

Calculate the cross product with another vector.

Parameters:
  • x (float or ExprValue or tuple) – X component or tuple containing all components.

  • y (float or ExprValue, optional) – Y component. Defaults to None.

  • z (float or ExprValue, optional) – Z component. Defaults to None.

Returns:

Resultant vector after cross product.

Return type:

Vector

dot(x, y=None, z=None)#

Calculate the dot product with another vector.

Parameters:
  • x (float or ExprValue or tuple) – X component or tuple containing all components.

  • y (float or ExprValue, optional) – Y component. Defaults to None.

  • z (float or ExprValue, optional) – Z component. Defaults to None.

Returns:

Dot product result.

Return type:

float or ExprValue

classmethod findAngle(pt1, pt2, pt3, degrees=False)#

Calculate the angle subtended between vectors (pt2-pt1) and (pt3-pt1).

Parameters:
  • pt1 (Vector or tuple) – First point.

  • pt2 (Vector or tuple) – Second point.

  • pt3 (Vector or tuple) – Third point.

  • degrees (bool, optional) – If True, returns the angle in degrees. Defaults to False.

Returns:

Angle between the vectors in radians or degrees.

Return type:

float

isAlignedWith(x, y=None, z=None, tolerance=1e-05, normalize=True)#

Check if the vector is parallel to another vector.

Parameters:
  • x (float or ExprValue or tuple) – X component or tuple containing all components.

  • y (float or ExprValue, optional) – Y component. Defaults to None.

  • z (float or ExprValue, optional) – Z component. Defaults to None.

  • tolerance (float, optional) – Tolerance value for alignment check. Defaults to 1e-5.

  • normalize (bool, optional) – If True, normalizes the vectors before checking. Defaults to True.

Returns:

True if vectors are aligned, False otherwise.

Return type:

bool

iszero()#

Check if the vector is null. Returns True if x, y and z are all zero.

magnitude()#

Calculate the magnitude (length) of the vector.

Returns:

Magnitude of the vector.

Return type:

float or ExprValue

normalize()#

Normalize the vector to have a magnitude of 1.

Returns:

Normalized vector.

Return type:

Vector

perpendicularize()#

Create a vector perpendicular to the current one.

Returns:

Perpendicular vector.

Return type:

Vector

scale(x, y=None, z=None)#

Scale the vector.

Parameters:
  • x (float or ExprValue) – Scale value for X component or for all if y and z are None.

  • y (float or ExprValue, optional) – Scale value for Y component. Defaults to x.

  • z (float or ExprValue, optional) – Scale value for Z component. Defaults to x.

Returns:

Scaled vector.

Return type:

Vector