Header menu logo Euclid

RigidMatrix Type

An immutable 4x3 rigid matrix. For only rotation and translation in 3D space. This matrix guarantees to NOT scale, shear, flip, mirror, reflect or project. Angles are preserved. Lengths are preserved. Area is preserved. Volume is preserved. A rigid matrix is a matrix whose 3x3 columns and rows are orthogonal unit-vectors. The matrix is represented in the following column-vector syntax form: M11 M21 M31 X41 M12 M22 M32 Y42 M13 M23 M33 Z43 Where X41, Y42 and Z43 refer to the translation part of the RigidMatrix. The Determinant of this matrix is always 1.0. Note: Never use the struct default constructor RigidMatrix() as it will create an invalid zero RigidMatrix. Use RigidMatrix.create or RigidMatrix.createUnchecked instead.

Record fields

Record Field Description

M11

Full Usage: M11

Field type: float
Field type: float

M12

Full Usage: M12

Field type: float
Field type: float

M13

Full Usage: M13

Field type: float
Field type: float

M21

Full Usage: M21

Field type: float
Field type: float

M22

Full Usage: M22

Field type: float
Field type: float

M23

Full Usage: M23

Field type: float
Field type: float

M31

Full Usage: M31

Field type: float
Field type: float

M32

Full Usage: M32

Field type: float
Field type: float

M33

Full Usage: M33

Field type: float
Field type: float

X41

Full Usage: X41

Field type: float
Field type: float

Y42

Full Usage: Y42

Field type: float
Field type: float

Z43

Full Usage: Z43

Field type: float
Field type: float

Instance members

Instance member Description

this.ByColumns

Full Usage: this.ByColumns

Returns: float[]

Returns the 12 elements column-major order: [| M11 M12 M13 M21 M22 M23 M31 M32 M33 X41 Y42 Z43 |] Where X41, Y42 and Z43 refer to the translation part of the RigidMatrix.

Returns: float[]

this.ByRows

Full Usage: this.ByRows

Returns: float[]

Returns the 12 elements in row-major order: [| M11 M21 M31 X41 M12 M22 M32 Y42 M13 M23 M33 Z43 |] Where X41, Y42 and Z43 refer to the translation part of the RigidMatrix.

Returns: float[]

this.ColumnVector1

Full Usage: this.ColumnVector1

Returns: Vec

Returns the first column vector. M11, M12 and M13

Returns: Vec

this.ColumnVector2

Full Usage: this.ColumnVector2

Returns: Vec

Returns the second column vector. M21, M22 and M23

Returns: Vec

this.ColumnVector3

Full Usage: this.ColumnVector3

Returns: Vec

Returns the third column vector. M31, M32 and M33

Returns: Vec

this.Determinant

Full Usage: this.Determinant

Returns: float

The Determinant of an Rigid Matrix is always 1.0 The Determinant describes the volume that a unit cube will have after the matrix was applied.

Returns: float

this.Inverse

Full Usage: this.Inverse

Returns: RigidMatrix

Inverts the RigidMatrix. Rigid matrices have always determinant 1.0 so the can always be inverted.

Returns: RigidMatrix

this.IsIdentity

Full Usage: this.IsIdentity

Returns: bool

Checks if the Matrix is an Identity Matrix in the form of: 1 0 0 0 0 1 0 0 0 0 1 0 Using an approximate tolerance of 1e-6.

Returns: bool

this.Translation

Full Usage: this.Translation

Returns: Vec

Returns the translation or forth column vector. X41, Y42 and Z43

Returns: Vec

Static members

Static member Description

v *** m

Full Usage: v *** m

Parameters:
Returns: Pnt
Modifiers: inline

Multiplies (or applies) a RigidMatrix to a 3D vector.

v : Pnt
m : RigidMatrix
Returns: Pnt

v *** m

Full Usage: v *** m

Parameters:
Returns: UnitVec
Modifiers: inline

Multiplies (or applies) a RigidMatrix to a 3D vector . Since a 3D vector represents a direction or an offset in space, but not a location, all translations are ignored. (Homogeneous Vector)

v : UnitVec
m : RigidMatrix
Returns: UnitVec

v *** m

Full Usage: v *** m

Parameters:
Returns: Vec
Modifiers: inline

Multiplies (or applies) a RigidMatrix to a 3D point. Since a 3D vector represents a direction or an offset in space, but not a location, all translations are ignored. (Homogeneous Vector)

v : Vec
m : RigidMatrix
Returns: Vec

matrixA *** matrixB

Full Usage: matrixA *** matrixB

Parameters:
Returns: RigidMatrix
Modifiers: inline

Multiplies matrixA with matrixB. The resulting transformation will first do matrixA and then matrixB.

matrixA : RigidMatrix
matrixB : RigidMatrix
Returns: RigidMatrix

RigidMatrix.addTranslation v m

Full Usage: RigidMatrix.addTranslation v m

Parameters:
Returns: RigidMatrix

Add a vector translation to an existing RigidMatrix.

v : Vec
m : RigidMatrix
Returns: RigidMatrix

RigidMatrix.addTranslationXYZ x y z m

Full Usage: RigidMatrix.addTranslationXYZ x y z m

Parameters:
Returns: RigidMatrix

Add a X, Y and Z translation to an existing RigidMatrix.

x : float
y : float
z : float
m : RigidMatrix
Returns: RigidMatrix

RigidMatrix.createFromMatrix m

Full Usage: RigidMatrix.createFromMatrix m

Parameters:
Returns: RigidMatrix

Tries to create a 3x4 RigidMatrix from a general 4x4 matrix. Fails if the input matrix does scale, shear, flip, mirror, reflect or project. However, translation is allowed.

m : Matrix
Returns: RigidMatrix

RigidMatrix.createFromQuaternion quaternion

Full Usage: RigidMatrix.createFromQuaternion quaternion

Parameters:
Returns: RigidMatrix

Create a RigidMatrix from a Quaternion.

quaternion : Quaternion
Returns: RigidMatrix

RigidMatrix.createPlaneToPlane (fromPlane, toPlane)

Full Usage: RigidMatrix.createPlaneToPlane (fromPlane, toPlane)

Parameters:
Returns: RigidMatrix

Creates a RigidMatrix to transform from one Plane or Coordinate System to another Plane.

fromPlane : PPlane
toPlane : PPlane
Returns: RigidMatrix

RigidMatrix.createRotationAxis (axis, angleDegrees)

Full Usage: RigidMatrix.createRotationAxis (axis, angleDegrees)

Parameters:
    axis : Vec
    angleDegrees : float

Returns: RigidMatrix

Creates a rotation around an Axis RigidMatrix. axis — Rotation axis, a vector of any length but 0.0 . angleDegrees — Rotation angle in Degrees. Returns a positive rotation, so clockwise looking in the direction of the axis vector.

axis : Vec
angleDegrees : float
Returns: RigidMatrix

RigidMatrix.createRotationAxis (axis, angleDegrees)

Full Usage: RigidMatrix.createRotationAxis (axis, angleDegrees)

Parameters:
    axis : UnitVec
    angleDegrees : float

Returns: RigidMatrix

Creates a rotation around an Axis RigidMatrix. axis — Rotation axis, as unit-vector. angleDegrees — Rotation angle in Degrees. Returns a positive rotation, so clockwise looking in the direction of the axis vector.

axis : UnitVec
angleDegrees : float
Returns: RigidMatrix

RigidMatrix.createRotationAxisCenter (axis, cen, angleDegrees)

Full Usage: RigidMatrix.createRotationAxisCenter (axis, cen, angleDegrees)

Parameters:
Returns: RigidMatrix

Creates a rotation matrix around an Axis at a given center point. axis — Rotation axis, a unit-vector. cen — The center point for the rotation. angleDegrees — Rotation angle in Degrees. Returns a positive rotation, so clockwise looking in the direction of the axis vector.

axis : UnitVec
cen : Pnt
angleDegrees : float
Returns: RigidMatrix

RigidMatrix.createRotationAxisCenter (axis, cen, angleDegrees)

Full Usage: RigidMatrix.createRotationAxisCenter (axis, cen, angleDegrees)

Parameters:
    axis : Vec
    cen : Pnt
    angleDegrees : float

Returns: RigidMatrix

Creates a rotation matrix around an Axis at a given center point. axis — Rotation axis, a vector of any length but 0.0 cen — The center point for the rotation. angleDegrees — Rotation angle in Degrees. Returns a positive rotation, so clockwise looking in the direction of the axis vector.

axis : Vec
cen : Pnt
angleDegrees : float
Returns: RigidMatrix

RigidMatrix.createRotationX angleDegrees

Full Usage: RigidMatrix.createRotationX angleDegrees

Parameters:
    angleDegrees : float

Returns: RigidMatrix

Creates a rotation around the X-axis RigidMatrix by angle in Degrees (not Radians). angleDegrees — Rotation angle in Degrees. A positive rotation will be from Y towards Z-axis, so counter-clockwise looking onto Y-X Plane. The resulting RigidMatrix will be: 1 0 0 0 0 cos(θ) -sin(θ) 0 0 sin(θ) cos(θ) 0

angleDegrees : float
Returns: RigidMatrix

RigidMatrix.createRotationY angleDegrees

Full Usage: RigidMatrix.createRotationY angleDegrees

Parameters:
    angleDegrees : float

Returns: RigidMatrix

Creates a rotation around the Y-axis RigidMatrix by angle in Degrees (not Radians). angleDegrees — Rotation angle in Degrees. A positive rotation will be from Z towards X-axis, so counter-clockwise looking onto Z-X Plane. The resulting RigidMatrix will be: cos(θ) 0 sin(θ) 0 0 1 0 0 -sin(θ) 0 cos(θ) 0

angleDegrees : float
Returns: RigidMatrix

RigidMatrix.createRotationZ angleDegrees

Full Usage: RigidMatrix.createRotationZ angleDegrees

Parameters:
    angleDegrees : float

Returns: RigidMatrix

Creates a rotation around the Z-axis RigidMatrix by angle in Degrees (not Radians). angleDegrees — Rotation angle in Degrees. Returns a positive rotation will be from X toward Y-axis, so counter-clockwise looking onto X-Y plane. The resulting RigidMatrix will be: cos(θ) -sin(θ) 0 0 sin(θ) cos(θ) 0 0 0 0 1 0

angleDegrees : float
Returns: RigidMatrix

RigidMatrix.createToPlane p

Full Usage: RigidMatrix.createToPlane p

Parameters:
Returns: RigidMatrix

Creates a RigidMatrix to transform from World plane or Coordinate System to given Plane. Also called Change of Basis.

p : PPlane
Returns: RigidMatrix

RigidMatrix.createTranslation v

Full Usage: RigidMatrix.createTranslation v

Parameters:
Returns: RigidMatrix

Creates a translation RigidMatrix: Vec - the vector by which to translate. The resulting RigidMatrix will be: 1 0 0 v.X 0 1 0 v.Y 0 0 1 v.Z

v : Vec
Returns: RigidMatrix

RigidMatrix.createTranslation (x, y, z)

Full Usage: RigidMatrix.createTranslation (x, y, z)

Parameters:
    x : float
    y : float
    z : float

Returns: RigidMatrix

Creates a translation RigidMatrix: x - the amount to translate in the X-axis. y - the amount to translate in the Y-axis. z - the amount to translate in the Z-axis. The resulting matrix will be: 1 0 0 x 0 1 0 y 0 0 1 z

x : float
y : float
z : float
Returns: RigidMatrix

RigidMatrix.createTranslationX x

Full Usage: RigidMatrix.createTranslationX x

Parameters:
    x : float

Returns: RigidMatrix

Creates a translation RigidMatrix: x - the amount by which to translate in X-axis. The resulting RigidMatrix will be: 1 0 0 x 0 1 0 0 0 0 1 0

x : float
Returns: RigidMatrix

RigidMatrix.createTranslationY y

Full Usage: RigidMatrix.createTranslationY y

Parameters:
    y : float

Returns: RigidMatrix

Creates a translation RigidMatrix: y - the amount by which to translate in Y-axis. The resulting RigidMatrix will be: 1 0 0 0 0 1 0 y 0 0 1 0

y : float
Returns: RigidMatrix

RigidMatrix.createTranslationZ z

Full Usage: RigidMatrix.createTranslationZ z

Parameters:
    z : float

Returns: RigidMatrix

Creates a translation RigidMatrix: z - the amount by which to translate in Z-axis. The resulting RigidMatrix will be: 1 0 0 0 0 1 0 0 0 0 1 z

z : float
Returns: RigidMatrix

RigidMatrix.createVecToVec (vecFrom, vecTo)

Full Usage: RigidMatrix.createVecToVec (vecFrom, vecTo)

Parameters:
Returns: RigidMatrix

Creates a rotation from one vectors direction to another vectors direction. If the tips of the two vectors unitized are closer than 1e-9 the identity matrix is returned. If the tips of the two vectors are almost exactly opposite, deviating less than 1e-6 from line (unitized), there is no valid unique 180 degree rotation that can be found, so an exception is raised.

vecFrom : Vec
vecTo : Vec
Returns: RigidMatrix

RigidMatrix.createVecToVec (vecFrom, vecTo)

Full Usage: RigidMatrix.createVecToVec (vecFrom, vecTo)

Parameters:
Returns: RigidMatrix

Creates a rotation from one vectors direction to another vectors direction. If the tips of the two vectors are closer than 1e-9 the identity matrix is returned. If the tips of the two vectors are almost exactly opposite, deviating less than 1e-6 from line, there is no valid unique 180 degree rotation that can be found, so an exception is raised.

vecFrom : UnitVec
vecTo : UnitVec
Returns: RigidMatrix

RigidMatrix.determinant m

Full Usage: RigidMatrix.determinant m

Parameters:
Returns: float
Modifiers: inline

The Determinant of an Rigid Matrix is always 1.0 The Determinant describes the volume that a unit cube will have have the matrix was applied.

m : RigidMatrix
Returns: float

RigidMatrix.equals tol a b

Full Usage: RigidMatrix.equals tol a b

Parameters:
Returns: bool

Checks if two Matrices are equal within tolerance. By comparing the fields M11 to M44 each with the given tolerance. Use a tolerance of 0.0 to check for an exact match.

tol : float
a : RigidMatrix
b : RigidMatrix
Returns: bool

RigidMatrix.identity

Full Usage: RigidMatrix.identity

Returns: RigidMatrix

Returns the Identity RigidMatrix: 1 0 0 0 0 1 0 0 0 0 1 0

Returns: RigidMatrix

RigidMatrix.inverse m

Full Usage: RigidMatrix.inverse m

Parameters:
Returns: RigidMatrix
Modifiers: inline

Inverses the RigidMatrix. An RigidMatrix can always be inverted. (as opposed to a general Matrix)

m : RigidMatrix
Returns: RigidMatrix

RigidMatrix.multiply (matrixA, matrixB)

Full Usage: RigidMatrix.multiply (matrixA, matrixB)

Parameters:
Returns: RigidMatrix

Multiplies matrixA with matrixB. The resulting transformation will first do matrixA and then matrixB.

matrixA : RigidMatrix
matrixB : RigidMatrix
Returns: RigidMatrix

RigidMatrix.removeTranslation m

Full Usage: RigidMatrix.removeTranslation m

Parameters:
Returns: RigidMatrix

Removes the translation part by setting X41, Y42 and Z43 to 0.0.

m : RigidMatrix
Returns: RigidMatrix

RigidMatrix.tryCreateFromMatrix m

Full Usage: RigidMatrix.tryCreateFromMatrix m

Parameters:
Returns: RigidMatrix option

Tries to create a 3x4 RigidMatrix from a general 4x4 matrix. Returns None if the input matrix does scale, shear, flip, mirror, reflect or project. However, translation is allowed.

m : Matrix
Returns: RigidMatrix option

Type something to start searching.