public final class Quaternion extends Object implements Cloneable, Serializable
A simple quaternion class for support for FactoredMatrix
and isometry generation
in P3
. Although the bulk of the methods are static, there are also some instance methods.
The generic calling convention is public static Quaternion method(Quaternion result, Quaternion q1, Quaternion q2)
where if result is null, a new instance is created and the result is returned in it.
Consult also Rn
for a description of conventions used in method design.
Constructor and Description |
---|
Quaternion()
The default quaternion is 1.
|
Quaternion(double r,
double dx,
double dy,
double dz) |
Quaternion(Quaternion nq)
A copy constructor.
|
Modifier and Type | Method and Description |
---|---|
static Quaternion |
add(Quaternion dst,
Quaternion a,
Quaternion b) |
double[] |
asDouble() |
double[] |
asDouble(double[] val) |
double[] |
asDouble(double[] val,
int[] channels) |
static double[] |
asDouble(double[] dst,
Quaternion q) |
static Quaternion |
conjugate(Quaternion dst,
Quaternion src) |
static Quaternion |
copy(Quaternion dst,
Quaternion src) |
static boolean |
equals(Quaternion a,
Quaternion b,
double tol)
Check for numerical equality.
|
static boolean |
equalsRotation(Quaternion a,
Quaternion b,
double tol)
Check if the rotations represented by the two quaternions are equal
|
static Quaternion |
exp(Quaternion dst,
double t,
Quaternion src) |
static double[] |
IJK(double[] dst,
Quaternion q)
return imaginary part as a double array.
|
static double |
innerProduct(Quaternion a,
Quaternion b) |
static Quaternion |
invert(Quaternion dst,
Quaternion src) |
static double |
length(Quaternion q) |
static double |
lengthSquared(Quaternion q) |
static Quaternion |
linearInterpolation(Quaternion dst,
Quaternion rot1,
Quaternion rot2,
double s) |
static Quaternion |
makeRotationQuaternionAngle(Quaternion q,
double angle,
double[] axis) |
static Quaternion |
makeRotationQuaternionCos(Quaternion q,
double cos,
double[] axis) |
static Quaternion |
negate(Quaternion dst,
Quaternion src) |
static Quaternion |
normalize(Quaternion dst,
Quaternion src) |
static double[] |
quaternionToRotationMatrix(double[] rot,
Quaternion qt) |
static double[] |
quaternionToRotationMatrixOld(double[] rot,
Quaternion qt)
Convert the quaternion qt into a 3x3 rotation matrix.
|
static Quaternion |
rotationMatrixToQuaternion(Quaternion q,
double[] mat)
Convert the 3x3 rotation matrix mat into a quaternion.
|
void |
setValue(double r,
double dx,
double dy,
double dz) |
static Quaternion |
star(Quaternion dst,
Quaternion src)
The conjugate of the inverse, or do I mean the inverse of the conjugate???
|
static Quaternion |
subtract(Quaternion dst,
Quaternion a,
Quaternion b) |
static Quaternion |
times(Quaternion dst,
double s,
Quaternion src) |
static Quaternion |
times(Quaternion a,
Quaternion b) |
String |
toString() |
public Quaternion()
public Quaternion(Quaternion nq)
nq
- public Quaternion(double r, double dx, double dy, double dz)
public static double[] asDouble(double[] dst, Quaternion q)
public void setValue(double r, double dx, double dy, double dz)
public static Quaternion copy(Quaternion dst, Quaternion src)
public static double[] IJK(double[] dst, Quaternion q)
dst
- q
- public static boolean equals(Quaternion a, Quaternion b, double tol)
a
- b
- tol
- public static boolean equalsRotation(Quaternion a, Quaternion b, double tol)
a
- b
- tol
- public static Quaternion exp(Quaternion dst, double t, Quaternion src)
public static Quaternion add(Quaternion dst, Quaternion a, Quaternion b)
public static Quaternion negate(Quaternion dst, Quaternion src)
public static Quaternion conjugate(Quaternion dst, Quaternion src)
public static Quaternion subtract(Quaternion dst, Quaternion a, Quaternion b)
public static Quaternion times(Quaternion dst, double s, Quaternion src)
public static Quaternion times(Quaternion a, Quaternion b)
public static double innerProduct(Quaternion a, Quaternion b)
public static double lengthSquared(Quaternion q)
public static double length(Quaternion q)
public static Quaternion invert(Quaternion dst, Quaternion src)
public static Quaternion star(Quaternion dst, Quaternion src)
dst
- src
- public static Quaternion normalize(Quaternion dst, Quaternion src)
public static Quaternion makeRotationQuaternionAngle(Quaternion q, double angle, double[] axis)
public static Quaternion makeRotationQuaternionCos(Quaternion q, double cos, double[] axis)
public static Quaternion rotationMatrixToQuaternion(Quaternion q, double[] mat)
q
- mat
- public static double[] quaternionToRotationMatrixOld(double[] rot, Quaternion qt)
rot
- qt
- public static double[] quaternionToRotationMatrix(double[] rot, Quaternion qt)
public static Quaternion linearInterpolation(Quaternion dst, Quaternion rot1, Quaternion rot2, double s)
object
- rot1
- rot2
- s
- public double[] asDouble()
public double[] asDouble(double[] val)
public double[] asDouble(double[] val, int[] channels)