java.lang.Cloneable
, MatrixTransformation
, Transformation
public class Quaternion extends java.lang.Object implements MatrixTransformation
Modifier and Type | Class | Description |
---|---|---|
protected static class |
Quaternion.QuaternionLoader |
Modifier and Type | Field | Description |
---|---|---|
protected double |
ox |
|
protected double |
oy |
|
protected double |
oz |
|
protected double |
q0 |
|
protected double |
q1 |
|
protected double |
q2 |
|
protected double |
q3 |
Constructor | 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 | 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 array.
|
static XML.ObjectLoader |
getLoader() |
|
double[] |
getOrigin() |
Returns the origin for this rotation
|
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.
|
protected double q0
protected double q1
protected double q2
protected double q3
protected double ox
protected double oy
protected double oz
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 double[] getOrigin()
public final double[][] getRotationMatrix(double[][] mat)
mat
- double[][] optional matrixpublic final double[] getFlatMatrix(double[] mat)
getFlatMatrix
in interface MatrixTransformation
mat
- double[] optional matrixpublic double[] getCoordinates()
public void setCoordinates(double q0, double q1, double q2, double q3)
q0
- doubleq1
- doubleq2
- doubleq3
- doublepublic 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 Transformation
clone
in class java.lang.Object
public double[] direct(double[] p)
direct
in interface Transformation
p
- double[]public double[] inverse(double[] p) throws java.lang.UnsupportedOperationException
Transformation
inverse
in interface Transformation
p
- 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()