Search Results for

    Show / Hide Table of Contents

    Struct Matrix4

    4x4 matrix, typically used to describe a transformation (rotation and translation).

    Namespace: ABB.Robotics.Math
    Assembly: ABB.Robotics.Math.dll
    Syntax
    public struct Matrix4

    Constructors

    View Source

    Matrix4(Matrix3, Vector3)

    Constructs a matrix from a 3x3 orientation matrix and a translation.

    Declaration
    public Matrix4(Matrix3 orientation, Vector3 translation)
    Parameters
    Type Name Description
    Matrix3 orientation
    Vector3 translation
    View Source

    Matrix4(Vector3)

    Creates a matrix with unit rotation and a specified translation.

    Declaration
    public Matrix4(Vector3 translation)
    Parameters
    Type Name Description
    Vector3 translation

    Translation vector

    View Source

    Matrix4(Vector3, Quaternion)

    Creates a matrix from a translation vector and a quaternion.

    Declaration
    public Matrix4(Vector3 translation, Quaternion quat)
    Parameters
    Type Name Description
    Vector3 translation

    Translation vector

    Quaternion quat

    Quaternion

    View Source

    Matrix4(Vector3, Vector3)

    Creates a matrix from a translation vector and Euler angles (zyx).

    Declaration
    public Matrix4(Vector3 translation, Vector3 eulerZYX)
    Parameters
    Type Name Description
    Vector3 translation

    Translation vector

    Vector3 eulerZYX

    Euler angles (zyx order)

    View Source

    Matrix4(Vector3, Vector3, Vector3, Vector3)

    Creates an affine matrix from four vectors

    Declaration
    public Matrix4(Vector3 x0, Vector3 y0, Vector3 z0, Vector3 t0)
    Parameters
    Type Name Description
    Vector3 x0

    X axis

    Vector3 y0

    Y axis

    Vector3 z0

    Z axis

    Vector3 t0

    Translation

    View Source

    Matrix4(Vector3, double)

    Creates a matrix from a rotation axis and angle, with unit translation.

    Declaration
    public Matrix4(Vector3 axis, double angle)
    Parameters
    Type Name Description
    Vector3 axis

    Rotation axis

    double angle

    Rotation angle

    Exceptions
    Type Condition
    ArgumentException

    Invalid rotation axis

    View Source

    Matrix4(Vector4, Vector4, Vector4, Vector4)

    Creates a matrix from four column vectors.

    Declaration
    public Matrix4(Vector4 x0, Vector4 y0, Vector4 z0, Vector4 t0)
    Parameters
    Type Name Description
    Vector4 x0

    First column

    Vector4 y0

    Second column

    Vector4 z0

    Third column

    Vector4 t0

    Fourth column

    View Source

    Matrix4(double[], bool)

    Creates a matrix from an array of 16 values.

    Declaration
    public Matrix4(double[] values, bool rowMajor)
    Parameters
    Type Name Description
    double[] values
    bool rowMajor

    Fields

    View Source

    Identity

    Identity matrix.

    Declaration
    public static readonly Matrix4 Identity
    Field Value
    Type Description
    Matrix4
    View Source

    t

    Column vector.

    Declaration
    public Vector4 t
    Field Value
    Type Description
    Vector4
    View Source

    x

    Column vector.

    Declaration
    public Vector4 x
    Field Value
    Type Description
    Vector4
    View Source

    y

    Column vector.

    Declaration
    public Vector4 y
    Field Value
    Type Description
    Vector4
    View Source

    z

    Column vector.

    Declaration
    public Vector4 z
    Field Value
    Type Description
    Vector4

    Properties

    View Source

    AxisAngle

    Gets/sets the rotation as axis/angle (represented by a 4-vector [axis,angle]).

    Declaration
    public Vector4 AxisAngle { get; set; }
    Property Value
    Type Description
    Vector4
    Exceptions
    Type Condition
    ArgumentException

    Invalid rotation axis

    View Source

    Elements

    Returns an array of all elements in column-first order.

    Declaration
    public double[] Elements { get; }
    Property Value
    Type Description
    double[]
    View Source

    EulerXYZ

    Gets/sets the rotation as Euler angles (xyz order).

    Declaration
    public Vector3 EulerXYZ { get; set; }
    Property Value
    Type Description
    Vector3
    View Source

    EulerZYX

    Gets/sets the rotation as Euler angles (zyx order).
    Note: the vector contains the angles as [rx,ry,rz].

    Declaration
    public Vector3 EulerZYX { get; set; }
    Property Value
    Type Description
    Vector3
    View Source

    IsNaN

    Returns a value indicating whether any elements evaluates to a value that is not a number (NaN).

    Declaration
    public bool IsNaN { get; }
    Property Value
    Type Description
    bool
    View Source

    this[int]

    Column vector access.

    Declaration
    public Vector4 this[int index] { get; set; }
    Parameters
    Type Name Description
    int index
    Property Value
    Type Description
    Vector4
    View Source

    Quaternion

    Gets/sets the rotation as a quaternion.

    Declaration
    public Quaternion Quaternion { get; set; }
    Property Value
    Type Description
    Quaternion
    View Source

    Translation

    Gets/sets the translation vector.

    Declaration
    public Vector3 Translation { get; set; }
    Property Value
    Type Description
    Vector3
    View Source

    UpperLeft

    Gets/sets the rotation as a 3x3 matrix.

    Declaration
    public Matrix3 UpperLeft { get; set; }
    Property Value
    Type Description
    Matrix3

    Methods

    View Source

    Align(Matrix4, Matrix4)

    Rotates a matrix so that its rotation axes coincide with the closest arbitrary (negative or positive) rotation axes of a reference matrix.

    Declaration
    public static Matrix4 Align(Matrix4 matrix, Matrix4 reference)
    Parameters
    Type Name Description
    Matrix4 matrix

    The matrix to rotate

    Matrix4 reference

    Reference matrix

    Returns
    Type Description
    Matrix4

    The aligned matrix

    View Source

    AlmostEquals(Matrix4)

    Comparison method for matrices with default tolerance

    Declaration
    public bool AlmostEquals(Matrix4 rhs)
    Parameters
    Type Name Description
    Matrix4 rhs

    Matrix to compare with

    Returns
    Type Description
    bool

    true if equals within tolerance

    View Source

    AlmostEquals(Matrix4, double)

    Comparison method for matrices with tolerance

    Declaration
    public bool AlmostEquals(Matrix4 rhs, double tolerance)
    Parameters
    Type Name Description
    Matrix4 rhs

    Matrix to compare with

    double tolerance

    tolerance

    Returns
    Type Description
    bool

    true if equals within tolerance

    View Source

    CheckRigid()

    Throws an exception if this matrix is not rigid.

    Declaration
    public void CheckRigid()
    View Source

    Clean()

    Zeroes any values smaller than Globals.EPS.

    Declaration
    public void Clean()
    View Source

    CleanRigid()

    Ensures this is a valid rigid matrix

    Declaration
    public void CleanRigid()
    View Source

    Determinant()

    Returns the determinant.

    Declaration
    public double Determinant()
    Returns
    Type Description
    double
    View Source

    FromAxis(Axis, Vector3, Vector3)

    Returns a matrix with one given axis. The other two axes are arbitrarily chosen to form a right-handed coordinate system.

    Declaration
    public static Matrix4 FromAxis(Axis axis, Vector3 axisDirection, Vector3 translation)
    Parameters
    Type Name Description
    Axis axis
    Vector3 axisDirection
    Vector3 translation
    Returns
    Type Description
    Matrix4
    View Source

    FromThreePoint(Vector3, Vector3, Vector3)

    Creates a matrix from three points.

    Declaration
    public static Matrix4 FromThreePoint(Vector3 x1, Vector3 x2, Vector3 y1)
    Parameters
    Type Name Description
    Vector3 x1

    First point on x axis

    Vector3 x2

    Second point on x axis

    Vector3 y1

    Point on y axis

    Returns
    Type Description
    Matrix4
    View Source

    FromTwoAxes(Vector3, Vector3, DirectionAxis, Vector3, DirectionAxis)

    Creates a matrix from a translation and two axis vectors

    Declaration
    public static Matrix4 FromTwoAxes(Vector3 translation, Vector3 axis1, DirectionAxis axis1Direction, Vector3 axis2, DirectionAxis axis2Direction)
    Parameters
    Type Name Description
    Vector3 translation

    Translation

    Vector3 axis1

    First axis

    DirectionAxis axis1Direction
    Vector3 axis2

    Second axis

    DirectionAxis axis2Direction
    Returns
    Type Description
    Matrix4
    View Source

    FromTwoPointXY(Vector3, Vector3, Vector3)

    Creates a matrix from a translation and two points

    Declaration
    public static Matrix4 FromTwoPointXY(Vector3 translation, Vector3 x1, Vector3 xy)
    Parameters
    Type Name Description
    Vector3 translation

    Translation

    Vector3 x1

    Point on x axis

    Vector3 xy

    Point in x-y plane

    Returns
    Type Description
    Matrix4
    View Source

    FromTwoPointXZ(Vector3, Vector3, Vector3)

    Creates a matrix from a translation and two points

    Declaration
    public static Matrix4 FromTwoPointXZ(Vector3 translation, Vector3 x1, Vector3 xz)
    Parameters
    Type Name Description
    Vector3 translation

    Translation

    Vector3 x1

    Point on x axis

    Vector3 xz

    Point in x-z plane

    Returns
    Type Description
    Matrix4
    View Source

    GetAxisVector(Axis)

    Gets the axis vector from the specified axis

    Declaration
    public Vector3 GetAxisVector(Axis axis)
    Parameters
    Type Name Description
    Axis axis

    the axis whose vector to get

    Returns
    Type Description
    Vector3

    the axis vector

    View Source

    GetAxisVector(DirectionAxis)

    Gets the positive or negative axis vector from the specified axis

    Declaration
    public Vector3 GetAxisVector(DirectionAxis axis)
    Parameters
    Type Name Description
    DirectionAxis axis

    the axis whose vector to get

    Returns
    Type Description
    Vector3

    the axis vector

    View Source

    Inverse()

    Returns the inverse of a general matrix.

    Declaration
    public Matrix4 Inverse()
    Returns
    Type Description
    Matrix4

    Inverted matrix

    View Source

    InverseRigid()

    Returns a an inverted copy of the matrix. If the matrix is non-rigid the result is undefined.

    Declaration
    public Matrix4 InverseRigid()
    Returns
    Type Description
    Matrix4

    The inverse of the matrix.

    View Source

    Invert()

    Inverts a general matrix, using Cramer's rule.

    Declaration
    public void Invert()
    View Source

    InvertAffine()

    Inverts an affine matrix.

    Declaration
    public void InvertAffine()
    View Source

    InvertRigid()

    Inverts a rigid (pure translation+rotation) matrix.

    Declaration
    public void InvertRigid()
    View Source

    IsAffine()

    Returns true if the matrix is affine.

    Declaration
    public bool IsAffine()
    Returns
    Type Description
    bool
    View Source

    IsEmpty()

    Returns true if all elements in the matrix are zero.

    Declaration
    public bool IsEmpty()
    Returns
    Type Description
    bool
    View Source

    IsIdentity()

    Returns true if the matrix is identity.

    Declaration
    public bool IsIdentity()
    Returns
    Type Description
    bool
    View Source

    IsRigid()

    Returns true if this matrix is rigid (orthogonal), e.g. it represents a pure rotation and translation.

    Declaration
    public bool IsRigid()
    Returns
    Type Description
    bool
    View Source

    Multiply(Matrix4)

    Matrix-Matrix multiplication method.

    Declaration
    public Matrix4 Multiply(Matrix4 rhs)
    Parameters
    Type Name Description
    Matrix4 rhs
    Returns
    Type Description
    Matrix4
    View Source

    Multiply(Vector4)

    Matrix-Vector4 multiplication method.

    Declaration
    public Vector4 Multiply(Vector4 rhs)
    Parameters
    Type Name Description
    Vector4 rhs
    Returns
    Type Description
    Vector4
    View Source

    MultiplyPoint(Vector3)

    Matrix-Vector3 (interpreted as a point) multiplication.

    Declaration
    public Vector3 MultiplyPoint(Vector3 rhs)
    Parameters
    Type Name Description
    Vector3 rhs
    Returns
    Type Description
    Vector3
    View Source

    MultiplyVector(Vector3)

    Matrix-Vector3 (interpreted as a direction) multiplication.

    Declaration
    public Vector3 MultiplyVector(Vector3 rhs)
    Parameters
    Type Name Description
    Vector3 rhs
    Returns
    Type Description
    Vector3
    View Source

    RelativeMatrix(Matrix4, Matrix4)

    Returns a matrix representing the relative transform, between the two specified matrices.

    Declaration
    public static Matrix4 RelativeMatrix(Matrix4 from, Matrix4 to)
    Parameters
    Type Name Description
    Matrix4 from
    Matrix4 to
    Returns
    Type Description
    Matrix4
    View Source

    Rotate(Vector3, Vector3, double)

    Rotates the matrix around an axis through a point.

    Declaration
    public void Rotate(Vector3 point, Vector3 axis, double angle)
    Parameters
    Type Name Description
    Vector3 point
    Vector3 axis
    double angle
    Exceptions
    Type Condition
    ArgumentException

    Invalid rotation axis

    View Source

    Rotate(Vector3, double)

    Rotates the matrix around an axis through the origin.

    Declaration
    public void Rotate(Vector3 axis, double angle)
    Parameters
    Type Name Description
    Vector3 axis
    double angle
    Exceptions
    Type Condition
    ArgumentException

    Invalid rotation axis

    View Source

    Scale(Vector3)

    Scale by vector about origin.

    Declaration
    public void Scale(Vector3 scalevec)
    Parameters
    Type Name Description
    Vector3 scalevec
    View Source

    Scale(Vector3, Vector3)

    Scale by vector about a point.

    Declaration
    public void Scale(Vector3 scalevec, Vector3 point)
    Parameters
    Type Name Description
    Vector3 scalevec
    Vector3 point
    View Source

    Scale(double)

    Scale uniformly about origin.

    Declaration
    public void Scale(double amount)
    Parameters
    Type Name Description
    double amount
    View Source

    ToString()

    Returns a string in the format
    [[x.x x.y x.z x.w] [y.x y.y y.z y.w] [z.x z.y z.z z.w] [t.x t.y t.z t.w]]

    Declaration
    public override string ToString()
    Returns
    Type Description
    string
    Overrides
    System.ValueType.ToString()
    View Source

    ToString(IFormatProvider)

    Returns a string in the format
    [[x.x x.y x.z x.w] [y.x y.y y.z y.w] [z.x z.y z.z z.w] [t.x t.y t.z t.w]]

    Declaration
    public string ToString(IFormatProvider formatProvider)
    Parameters
    Type Name Description
    IFormatProvider formatProvider
    Returns
    Type Description
    string
    View Source

    Translate(Vector3)

    Translates the matrix by a vector.

    Declaration
    public void Translate(Vector3 translation)
    Parameters
    Type Name Description
    Vector3 translation
    View Source

    Translate(double, double, double)

    Translates the matrix by x,y,z.

    Declaration
    public void Translate(double dx, double dy, double dz)
    Parameters
    Type Name Description
    double dx
    double dy
    double dz
    View Source

    TranslateLocal(Vector3)

    Translates the matrix by a vector in its own coordinate system.

    Declaration
    public void TranslateLocal(Vector3 translation)
    Parameters
    Type Name Description
    Vector3 translation
    View Source

    TranslateLocal(double, double, double)

    Translates the matrix by x,y,z in its own coordinate system.

    Declaration
    public void TranslateLocal(double dx, double dy, double dz)
    Parameters
    Type Name Description
    double dx
    double dy
    double dz
    View Source

    Transpose()

    Transposes the matrix.

    Declaration
    public void Transpose()
    View Source

    TryParse(string, out Matrix4)

    Converts the string representation to its Matrix4 equivalent.

    Declaration
    public static bool TryParse(string value, out Matrix4 result)
    Parameters
    Type Name Description
    string value
    Matrix4 result
    Returns
    Type Description
    bool

    A value indicating whether the conversion succeeded

    View Source

    TryParse(string, IFormatProvider, out Matrix4)

    Converts the string representation to its Matrix4 equivalent.

    Declaration
    public static bool TryParse(string value, IFormatProvider formatProvider, out Matrix4 result)
    Parameters
    Type Name Description
    string value
    IFormatProvider formatProvider
    Matrix4 result
    Returns
    Type Description
    bool

    A value indicating whether the conversion succeeded

    View Source

    WithEulerZYX(Vector3)

    Returns a new Matrix4 with the given Euler ZYX orientation

    Declaration
    public Matrix4 WithEulerZYX(Vector3 eulerZYX)
    Parameters
    Type Name Description
    Vector3 eulerZYX
    Returns
    Type Description
    Matrix4
    View Source

    WithTranslation(Vector3)

    Returns a new Matrix4 with the given translation

    Declaration
    public Matrix4 WithTranslation(Vector3 translation)
    Parameters
    Type Name Description
    Vector3 translation
    Returns
    Type Description
    Matrix4

    Operators

    View Source

    operator *(Matrix4, Matrix4)

    Matrix-Matrix multiplication operator.

    Declaration
    public static Matrix4 operator *(Matrix4 lhs, Matrix4 rhs)
    Parameters
    Type Name Description
    Matrix4 lhs
    Matrix4 rhs
    Returns
    Type Description
    Matrix4
    View Source

    operator *(Matrix4, Vector4)

    Matrix-Vector4 multiplication operator.

    Declaration
    public static Vector4 operator *(Matrix4 lhs, Vector4 rhs)
    Parameters
    Type Name Description
    Matrix4 lhs
    Vector4 rhs
    Returns
    Type Description
    Vector4
    • View Source
    In this article
    Back to top Copyright © 2026 ABB Robotics