Class Quaternion

java.lang.Object
org.hipparchus.complex.Quaternion
All Implemented Interfaces:
Serializable

public final class Quaternion extends Object implements Serializable
This class implements quaternions (Hamilton's hypercomplex numbers).

Instance of this class are guaranteed to be immutable.

See Also:
  • Field Details

    • IDENTITY

      public static final Quaternion IDENTITY
      Identity quaternion.
    • ZERO

      public static final Quaternion ZERO
      Zero quaternion.
    • I

      public static final Quaternion I
      i
    • J

      public static final Quaternion J
      j
    • K

      public static final Quaternion 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

      public Quaternion(double scalar, double[] v) throws MathIllegalArgumentException
      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

      public Quaternion getConjugate()
      Returns the conjugate quaternion of the instance.
      Returns:
      the conjugate quaternion
    • multiply

      public static Quaternion multiply(Quaternion q1, Quaternion q2)
      Returns the Hamilton product of two quaternions.
      Parameters:
      q1 - First quaternion.
      q2 - Second quaternion.
      Returns:
      the product q1 and q2, in that order.
    • multiply

      public Quaternion multiply(Quaternion q)
      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

      public static Quaternion add(Quaternion q1, Quaternion q2)
      Computes the sum of two quaternions.
      Parameters:
      q1 - Quaternion.
      q2 - Quaternion.
      Returns:
      the sum of q1 and q2.
    • add

      public Quaternion add(Quaternion q)
      Computes the sum of the instance and another quaternion.
      Parameters:
      q - Quaternion.
      Returns:
      the sum of this instance and q
    • subtract

      public static Quaternion subtract(Quaternion q1, Quaternion q2)
      Subtracts two quaternions.
      Parameters:
      q1 - First Quaternion.
      q2 - Second quaternion.
      Returns:
      the difference between q1 and q2.
    • subtract

      public Quaternion subtract(Quaternion q)
      Subtracts a quaternion from the instance.
      Parameters:
      q - Quaternion.
      Returns:
      the difference between this instance and q.
    • dotProduct

      public static double dotProduct(Quaternion q1, Quaternion q2)
      Computes the dot-product of two quaternions.
      Parameters:
      q1 - Quaternion.
      q2 - Quaternion.
      Returns:
      the dot product of q1 and q2.
    • dotProduct

      public double dotProduct(Quaternion q)
      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

      public Quaternion 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

      public boolean equals(Object other)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(Quaternion q, double eps)
      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

      public Quaternion getPositivePolarForm()
      Returns the polar form of the quaternion.
      Returns:
      the unit quaternion with positive scalar part.
    • getInverse

      public Quaternion 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.
      Returns:
      the vector part.
      See Also:
    • multiply

      public Quaternion multiply(double alpha)
      Multiplies the instance by a scalar.
      Parameters:
      alpha - Scalar factor.
      Returns:
      a scaled quaternion.
    • toString

      public String toString()
      Overrides:
      toString in class Object