Package org.hipparchus.complex
Class Quaternion
java.lang.Object
org.hipparchus.complex.Quaternion
- All Implemented Interfaces:
Serializable
This class implements
quaternions (Hamilton's hypercomplex numbers).
Instance of this class are guaranteed to be immutable.
- See Also:
-
Field Summary
Modifier and TypeFieldDescriptionstatic final Quaternion
istatic final Quaternion
Identity quaternion.static final Quaternion
jstatic final Quaternion
kstatic final Quaternion
Zero quaternion. -
Constructor Summary
ConstructorDescriptionQuaternion
(double[] v) Builds a pure quaternion from a vector (assuming that the scalar part is zero).Quaternion
(double scalar, double[] v) Builds a quaternion from scalar and vector parts.Quaternion
(double a, double b, double c, double d) Builds a quaternion from its components. -
Method Summary
Modifier and TypeMethodDescriptionadd
(Quaternion q) Computes the sum of the instance and another quaternion.static Quaternion
add
(Quaternion q1, Quaternion q2) Computes the sum of two quaternions.double
Computes the dot-product of the instance by a quaternion.static double
dotProduct
(Quaternion q1, Quaternion q2) Computes the dot-product of two quaternions.boolean
boolean
equals
(Quaternion q, double eps) Checks whether this instance is equal to another quaternion within a given tolerance.Returns the conjugate quaternion of the instance.Returns the inverse of this instance.double
getNorm()
Computes the norm of the quaternion.Returns the polar form of the quaternion.double
getQ0()
Gets the first component of the quaternion (scalar part).double
getQ1()
Gets the second component of the quaternion (first component of the vector part).double
getQ2()
Gets the third component of the quaternion (second component of the vector part).double
getQ3()
Gets the fourth component of the quaternion (third component of the vector part).double
Gets the scalar part of the quaternion.double[]
Gets the three components of the vector part of the quaternion.int
hashCode()
boolean
isPureQuaternion
(double eps) Checks whether the instance is a pure quaternion within a given tolerance.boolean
isUnitQuaternion
(double eps) Checks whether the instance is a unit quaternion within a given tolerance.multiply
(double alpha) Multiplies the instance by a scalar.Returns the Hamilton product of the instance by a quaternion.static Quaternion
multiply
(Quaternion q1, Quaternion q2) Returns the Hamilton product of two quaternions.Computes the normalized quaternion (the versor of the instance).Subtracts a quaternion from the instance.static Quaternion
subtract
(Quaternion q1, Quaternion q2) Subtracts two quaternions.toString()
-
Field Details
-
IDENTITY
Identity quaternion. -
ZERO
Zero quaternion. -
I
i -
J
j -
K
k
-
-
Constructor Details
-
Quaternion
public Quaternion(double a, double b, double c, double d) Builds a quaternion from its components.- Parameters:
a
- Scalar component.b
- First vector component.c
- Second vector component.d
- Third vector component.
-
Quaternion
Builds a quaternion from scalar and vector parts.- Parameters:
scalar
- Scalar part of the quaternion.v
- Components of the vector part of the quaternion.- Throws:
MathIllegalArgumentException
- if the array length is not 3.
-
Quaternion
public Quaternion(double[] v) Builds a pure quaternion from a vector (assuming that the scalar part is zero).- Parameters:
v
- Components of the vector part of the pure quaternion.
-
-
Method Details
-
getConjugate
Returns the conjugate quaternion of the instance.- Returns:
- the conjugate quaternion
-
multiply
Returns the Hamilton product of two quaternions.- Parameters:
q1
- First quaternion.q2
- Second quaternion.- Returns:
- the product
q1
andq2
, in that order.
-
multiply
Returns the Hamilton product of the instance by a quaternion.- Parameters:
q
- Quaternion.- Returns:
- the product of this instance with
q
, in that order.
-
add
Computes the sum of two quaternions.- Parameters:
q1
- Quaternion.q2
- Quaternion.- Returns:
- the sum of
q1
andq2
.
-
add
Computes the sum of the instance and another quaternion.- Parameters:
q
- Quaternion.- Returns:
- the sum of this instance and
q
-
subtract
Subtracts two quaternions.- Parameters:
q1
- First Quaternion.q2
- Second quaternion.- Returns:
- the difference between
q1
andq2
.
-
subtract
Subtracts a quaternion from the instance.- Parameters:
q
- Quaternion.- Returns:
- the difference between this instance and
q
.
-
dotProduct
Computes the dot-product of two quaternions.- Parameters:
q1
- Quaternion.q2
- Quaternion.- Returns:
- the dot product of
q1
andq2
.
-
dotProduct
Computes the dot-product of the instance by a quaternion.- Parameters:
q
- Quaternion.- Returns:
- the dot product of this instance and
q
.
-
getNorm
public double getNorm()Computes the norm of the quaternion.- Returns:
- the norm.
-
normalize
Computes the normalized quaternion (the versor of the instance). The norm of the quaternion must not be zero.- Returns:
- a normalized quaternion.
- Throws:
MathIllegalArgumentException
- if the norm of the quaternion is zero.
-
equals
-
hashCode
public int hashCode() -
equals
Checks whether this instance is equal to another quaternion within a given tolerance.- Parameters:
q
- Quaternion with which to compare the current quaternion.eps
- Tolerance.- Returns:
true
if the each of the components are equal within the allowed absolute error.
-
isUnitQuaternion
public boolean isUnitQuaternion(double eps) Checks whether the instance is a unit quaternion within a given tolerance.- Parameters:
eps
- Tolerance (absolute error).- Returns:
true
if the norm is 1 within the given tolerance,false
otherwise
-
isPureQuaternion
public boolean isPureQuaternion(double eps) Checks whether the instance is a pure quaternion within a given tolerance.- Parameters:
eps
- Tolerance (absolute error).- Returns:
true
if the scalar part of the quaternion is zero.
-
getPositivePolarForm
Returns the polar form of the quaternion.- Returns:
- the unit quaternion with positive scalar part.
-
getInverse
Returns the inverse of this instance. The norm of the quaternion must not be zero.- Returns:
- the inverse.
- Throws:
MathIllegalArgumentException
- if the norm (squared) of the quaternion is zero.
-
getQ0
public double getQ0()Gets the first component of the quaternion (scalar part).- Returns:
- the scalar part.
-
getQ1
public double getQ1()Gets the second component of the quaternion (first component of the vector part).- Returns:
- the first component of the vector part.
-
getQ2
public double getQ2()Gets the third component of the quaternion (second component of the vector part).- Returns:
- the second component of the vector part.
-
getQ3
public double getQ3()Gets the fourth component of the quaternion (third component of the vector part).- Returns:
- the third component of the vector part.
-
getScalarPart
public double getScalarPart()Gets the scalar part of the quaternion.- Returns:
- the scalar part.
- See Also:
-
getVectorPart
public double[] getVectorPart()Gets the three components of the vector part of the quaternion. -
multiply
Multiplies the instance by a scalar.- Parameters:
alpha
- Scalar factor.- Returns:
- a scaled quaternion.
-
toString
-