Show / Hide Table of Contents

Struct Quaternion

Quaternion, used to describe a rotation.

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

Constructors

View Source

Quaternion(Matrix4)

Creates a quaternion from the rotation part of a 4x4 matrix.

Declaration
public Quaternion(Matrix4 m)
Parameters
Type Name Description
Matrix4 m

Matrix (assumed to be pure rotation/translation)

View Source

Quaternion(Vector3)

Creates a quaternion from euler angles.

Declaration
public Quaternion(Vector3 eulerZYX)
Parameters
Type Name Description
Vector3 eulerZYX

Orientation in Euler angles (zyx order).

View Source

Quaternion(Vector3, double)

Creates a quaternion from rotation axis and angle.

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

Normalized rotation axis

double angle

Rotation angle (radians)

Exceptions
Type Condition
ArgumentException

Invalid rotation axis

View Source

Quaternion(double, Vector3)

Creates a quaternion from scalar and vector.

Declaration
public Quaternion(double w, Vector3 vec)
Parameters
Type Name Description
double w

Scalar part

Vector3 vec

Vector part

View Source

Quaternion(double, double, double)

Creates a quaternion from Euler angles (zyx order).

Declaration
public Quaternion(double xr, double yr, double zr)
Parameters
Type Name Description
double xr

Rotation around the x axis (radians)

double yr

Rotation around the y axis (radians)

double zr

Rotation around the z axis (radians)

View Source

Quaternion(double, double, double, double)

Creates a quaternion from four doubles.

Declaration
public Quaternion(double q1, double q2, double q3, double q4)
Parameters
Type Name Description
double q1
double q2
double q3
double q4
View Source

Quaternion(double[])

Creates a quaternion from an array of doubles.

Declaration
public Quaternion(double[] vec)
Parameters
Type Name Description
double[] vec

Fields

View Source

Identity

Identity quaternion [1,0,0,0]

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

q1

Scalar part.

Declaration
public double q1
Field Value
Type Description
double
View Source

q2

Vector part.

Declaration
public double q2
Field Value
Type Description
double
View Source

q3

Vector part.

Declaration
public double q3
Field Value
Type Description
double
View Source

q4

Vector part.

Declaration
public double q4
Field Value
Type Description
double

Properties

View Source

AxisAngle

Gets/sets the rotation as normalized rotation axis and angle
(represesented by a Vector4 [axis, angle]).

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

Invalid rotation axis

View Source

EulerXYZ

Gets/sets the rotation as Euler angles (xyz order).
Equivalent to RPY (?).

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

this[int]

Array access.

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

Matrix

Gets/sets the rotation as a 3x3 matrix

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

Scalar

Gets/sets the scalar part.

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

Vector

Gets/sets the vector part.

Declaration
public Vector3 Vector { get; set; }
Property Value
Type Description
Vector3

Methods

View Source

Add(Quaternion)

Element-wise addition method.

Declaration
public Quaternion Add(Quaternion rhs)
Parameters
Type Name Description
Quaternion rhs
Returns
Type Description
Quaternion
View Source

AlmostEquals(Quaternion)

Comparison method for quaternions with tolerance (EPS)

Declaration
public bool AlmostEquals(Quaternion b)
Parameters
Type Name Description
Quaternion b
Returns
Type Description
bool
View Source

Conjugate()

Returns the conjugate [q1,-q2,-q3,-q4] of the quaternion.

Declaration
public Quaternion Conjugate()
Returns
Type Description
Quaternion
View Source

Divide(double)

Quaternion-scalar division method.

Declaration
public Quaternion Divide(double rhs)
Parameters
Type Name Description
double rhs
Returns
Type Description
Quaternion
View Source

Dot(Quaternion)

Quaternion dot product.

Declaration
public double Dot(Quaternion rhs)
Parameters
Type Name Description
Quaternion rhs
Returns
Type Description
double
View Source

Equals(object)

Declaration
public override bool Equals(object obj)
Parameters
Type Name Description
object obj
Returns
Type Description
bool
Overrides
ValueType.Equals(object)
View Source

GetHashCode()

Declaration
public override int GetHashCode()
Returns
Type Description
int
Overrides
ValueType.GetHashCode()
View Source

Interpolate(Quaternion, double)

Spherical linear interpolation.

Declaration
public Quaternion Interpolate(Quaternion quat, double slerp)
Parameters
Type Name Description
Quaternion quat

Second quaternion

double slerp

Interpolation parameter

Returns
Type Description
Quaternion

Interpolated quaternion

View Source

Inverse()

Returns the inverse (conjugate*1/norm) of the quaternion.

Declaration
public Quaternion Inverse()
Returns
Type Description
Quaternion
View Source

Invert()

Inverts the quaternion.

Declaration
public void Invert()
View Source

Magnitude()

Returns the magnitude of the quaternion.

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

Multiply(Quaternion)

Quaternion-Quaternion multiplication method.

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

Multiply(double)

Quaternion-scalar multiplication method.

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

Norm()

Returns the norm of the quaternion.

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

Normalize()

Normalizes the quaternion.

Declaration
public void Normalize()
View Source

Subtract(Quaternion)

Element-wise subtraction method.

Declaration
public Quaternion Subtract(Quaternion rhs)
Parameters
Type Name Description
Quaternion rhs
Returns
Type Description
Quaternion
View Source

ToString()

Returns a string in the format
[q1 q2 q3 q4]

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

ToString(IFormatProvider)

Returns a string in the format
[q1 q2 q3 q4]

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

ToString(int, string)

Returns a string in the format q1 q2 q3 q4 with a specified number of decimals and separator between the elements.

Declaration
public string ToString(int numDecimals, string separator)
Parameters
Type Name Description
int numDecimals
string separator
Returns
Type Description
string
View Source

ToString(int, string, IFormatProvider)

Returns a string in the format q1 q2 q3 q4 with a specified number of decimals and separator between the elements.

Declaration
public string ToString(int numDecimals, string separator, IFormatProvider formatProvider)
Parameters
Type Name Description
int numDecimals
string separator
IFormatProvider formatProvider
Returns
Type Description
string
View Source

TryParse(string, IFormatProvider, out Quaternion)

Converts the string representation of the format [q1,q2,q3,q4] to its Quaternion equivalent.

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

Operators

View Source

operator +(Quaternion, Quaternion)

Element-wise addition operator.

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

operator /(Quaternion, double)

Quaternion-scalar division operator.

Declaration
public static Quaternion operator /(Quaternion lhs, double rhs)
Parameters
Type Name Description
Quaternion lhs
double rhs
Returns
Type Description
Quaternion
View Source

operator ==(Quaternion, Quaternion)

Equality operator

Declaration
public static bool operator ==(Quaternion lhs, Quaternion rhs)
Parameters
Type Name Description
Quaternion lhs
Quaternion rhs
Returns
Type Description
bool
View Source

operator !=(Quaternion, Quaternion)

Inequality operator

Declaration
public static bool operator !=(Quaternion lhs, Quaternion rhs)
Parameters
Type Name Description
Quaternion lhs
Quaternion rhs
Returns
Type Description
bool
View Source

operator *(Quaternion, Quaternion)

Quaternion-Quaternion multiplication operator.

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

operator *(Quaternion, double)

Quaternion-scalar multiplication operator.

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

operator *(double, Quaternion)

Scalar-Quaternion multiplication operator.

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

operator -(Quaternion, Quaternion)

Element-wise subtraction operator.

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

operator -(Quaternion)

Unary negation operator.

Declaration
public static Quaternion operator -(Quaternion rhs)
Parameters
Type Name Description
Quaternion rhs
Returns
Type Description
Quaternion
  • View Source
In this article
Back to top Copyright © 2025 ABB