public class Quaternion extends java.lang.Object implements MatrixTransformation
| Modifier and Type | Class and Description |
|---|---|
protected static class |
Quaternion.QuaternionLoader |
| Constructor and Description |
|---|
Quaternion()
Constructs and initializes a unit quaternion (1,0,0,0).
|
Quaternion(double[] q)
Constructs and initializes a quaternion from the array of length 4.
|
Quaternion(double q0,
double q1,
double q2,
double q3)
Constructs and initializes quaternion from the specified components.
|
Quaternion(double q0,
Vec3D vector)
Constructs and initializes quaternion from the specified components.
|
Quaternion(Quaternion q)
Constructs and initializes a Quaternion with the same values as the given quaternion.
|
| Modifier and Type | Method and Description |
|---|---|
void |
add(Quaternion q)
Adds this quaternion to the given quaternion.
|
double |
angle(Quaternion q)
Returns the angle in radians between this quaternion and the given
quaternion.
|
java.lang.Object |
clone()
Instaniates a quaterion whose components are identical to this quaterion.
|
void |
conjugate()
Conjugates this quaternion in place.
|
static Quaternion |
createAlignmentTransformation(double[] v1,
double[] v2)
Instantiates a quaternion that aligns the first vector with the second vector.
|
double[] |
direct(double[] p)
Transforms (rotates) the coordinates of the given point.
|
double |
dot(Quaternion q)
Returns the dot product of this quaternion and quaternion q.
|
double[] |
getCoordinates()
Gets the Quaternion coordinates.
|
double[] |
getFlatMatrix(double[] mat)
Gets the direct homogeneous affine transformation flattened into a 1-d arrray.
|
static XML.ObjectLoader |
getLoader() |
double[][] |
getRotationMatrix(double[][] mat)
Gets the direct rotation matrix of this quaternion rotation.
|
double[] |
inverse(double[] p)
The inverse transformation (if it exists).
|
double |
magnitude()
Returns the magnitude of this quaternion.
|
double |
magnitudeSquared()
Returns the squared magnitude of this vector.
|
void |
multiply(Quaternion q)
Multiplies this quaternion with the given quaternion.
|
void |
normalize()
Normalizes this quaternion in place.
|
double[] |
setCoordinates(double[] q)
Sets the quaternion coordinates from the array of length 4.
|
void |
setCoordinates(double q0,
double q1,
double q2,
double q3)
Sets the quaternion coordinates.
|
double[] |
setOrigin(double[] origin)
Sets the origin for this rotation.
|
void |
setOrigin(double ox,
double oy,
double oz)
Sets the origin for this rotation.
|
void |
subtract(Quaternion q)
Subtracts this quaternion from the given quaternion.
|
public Quaternion(double q0,
double q1,
double q2,
double q3)
q0 - doubleq1 - doubleq2 - doubleq3 - doublepublic Quaternion(double q0,
Vec3D vector)
q0 - doublevector - sets with q1:vector.x, q2:vector.y, q3:vector.zpublic Quaternion(double[] q)
q - the array of length 4 containing q0, q1, q2, q3public Quaternion(Quaternion q)
q - the Vector3d containing the initialization x y z datapublic Quaternion()
public static Quaternion createAlignmentTransformation(double[] v1, double[] v2)
v1 - double[]v2 - double[]public void setOrigin(double ox,
double oy,
double oz)
ox - doubleoy - doubleoz - doublepublic double[] setOrigin(double[] origin)
origin - double[] the new originpublic final double[][] getRotationMatrix(double[][] mat)
mat - double[][] optional matrixpublic final double[] getFlatMatrix(double[] mat)
getFlatMatrix in interface MatrixTransformationmat - double[] optional matrixpublic double[] getCoordinates()
public final void setCoordinates(double q0,
double q1,
double q2,
double q3)
q0 - doubleq1 - doubleq2 - doubleq3 - doublepublic final double[] setCoordinates(double[] q)
q - the array of length 4 containing q0, q1, q2, q3public final void normalize()
public final void conjugate()
public final void add(Quaternion q)
q - Quaternionpublic final void subtract(Quaternion q)
q - Quaternionpublic final void multiply(Quaternion q)
q - Quaternionpublic final double dot(Quaternion q)
q - the other quaternionpublic final double magnitudeSquared()
public final double magnitude()
public final double angle(Quaternion q)
q - the other quaternionpublic java.lang.Object clone()
clone in interface Transformationclone in class java.lang.Objectpublic double[] direct(double[] p)
direct in interface Transformationp - double[]public double[] inverse(double[] p)
throws java.lang.UnsupportedOperationException
Transformationinverse in interface Transformationp - double[] the coordinates to be transformed
(the array's contents will be changed accordingly)java.lang.UnsupportedOperationException - If the transformation is
not invertiblepublic static XML.ObjectLoader getLoader()