Interface Quaternionfc
-
- All Known Implementing Classes:
Quaternionf
public interface QuaternionfcInterface to a read-only view of a quaternion of single-precision floats.- Author:
- Kai Burjack
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description Quaternionfadd(float x, float y, float z, float w, Quaternionf dest)Add the quaternion(x, y, z, w)to this quaternion and store the result indest.Quaternionfadd(Quaternionfc q2, Quaternionf dest)Addq2to this quaternion and store the result indest.floatangle()Return the angle in radians represented by this normalized quaternion rotation.Quaternionfconjugate(Quaternionf dest)Conjugate this quaternion and store the result indest.QuaternionfconjugateBy(Quaternionfc q, Quaternionf dest)Conjugatethisby the given quaternionqby computingq * this * q^-1and store the result intodest.Quaternionfdifference(Quaternionfc other, Quaternionf dest)Compute the difference betweenthisand theotherquaternion and store the result indest.Quaternionfdiv(Quaternionfc b, Quaternionf dest)Dividethisquaternion byband store the result indest.booleanequals(float x, float y, float z, float w)booleanequals(Quaternionfc q, float delta)Compare the quaternion components ofthisquaternion with the given quaternion using the givendeltaand return whether all of them are equal within a maximum difference ofdelta.AxisAngle4dget(AxisAngle4d dest)Set the givenAxisAngle4dto represent the rotation ofthisquaternion.AxisAngle4fget(AxisAngle4f dest)Set the givenAxisAngle4fto represent the rotation ofthisquaternion.Matrix3dget(Matrix3d dest)Set the given destination matrix to the rotation represented bythis.Matrix3fget(Matrix3f dest)Set the given destination matrix to the rotation represented bythis.Matrix4dget(Matrix4d dest)Set the given destination matrix to the rotation represented bythis.Matrix4fget(Matrix4f dest)Set the given destination matrix to the rotation represented bythis.Matrix4x3dget(Matrix4x3d dest)Set the given destination matrix to the rotation represented bythis.Matrix4x3fget(Matrix4x3f dest)Set the given destination matrix to the rotation represented bythis.Quaterniondget(Quaterniond dest)Set the givenQuaterniondto the values ofthis.Quaternionfget(Quaternionf dest)Set the givenQuaternionfto the values ofthis.java.nio.ByteBuffergetAsMatrix3f(java.nio.ByteBuffer dest)Store the 3x3 float matrix representation ofthisquaternion in column-major order into the givenByteBuffer.java.nio.FloatBuffergetAsMatrix3f(java.nio.FloatBuffer dest)Store the 3x3 float matrix representation ofthisquaternion in column-major order into the givenFloatBuffer.java.nio.ByteBuffergetAsMatrix4f(java.nio.ByteBuffer dest)Store the 4x4 float matrix representation ofthisquaternion in column-major order into the givenByteBuffer.java.nio.FloatBuffergetAsMatrix4f(java.nio.FloatBuffer dest)Store the 4x4 float matrix representation ofthisquaternion in column-major order into the givenFloatBuffer.java.nio.ByteBuffergetAsMatrix4x3f(java.nio.ByteBuffer dest)Store the 4x3 float matrix representation ofthisquaternion in column-major order into the givenByteBuffer.java.nio.FloatBuffergetAsMatrix4x3f(java.nio.FloatBuffer dest)Store the 4x3 float matrix representation ofthisquaternion in column-major order into the givenFloatBuffer.Vector3fgetEulerAnglesXYZ(Vector3f eulerAngles)Get the euler angles in radians in rotation sequenceXYZof this quaternion and store them in the provided parametereulerAngles.Vector3fgetEulerAnglesYXZ(Vector3f eulerAngles)Get the euler angles in radians in rotation sequenceYXZof this quaternion and store them in the provided parametereulerAngles.Vector3fgetEulerAnglesZXY(Vector3f eulerAngles)Get the euler angles in radians in rotation sequenceZXYof this quaternion and store them in the provided parametereulerAngles.Vector3fgetEulerAnglesZYX(Vector3f eulerAngles)Get the euler angles in radians in rotation sequenceZYXof this quaternion and store them in the provided parametereulerAngles.Quaternionfintegrate(float dt, float vx, float vy, float vz, Quaternionf dest)Integrate the rotation given by the angular velocity(vx, vy, vz)around the x, y and z axis, respectively, with respect to the given elapsed time deltadtand add the differentiate rotation to the rotation represented by this quaternion and store the result intodest.Quaternionfinvert(Quaternionf dest)Invert this quaternion and store thenormalizedresult indest.booleanisFinite()Determine whether all components are finite floating-point values, that is, they are notNaNand notinfinity.floatlengthSquared()Return the square of the length of this quaternion.QuaternionflookAlong(float dirX, float dirY, float dirZ, float upX, float upY, float upZ, Quaternionf dest)Apply a rotation to this quaternion that maps the given direction to the positive Z axis, and store the result indest.QuaternionflookAlong(Vector3fc dir, Vector3fc up, Quaternionf dest)Apply a rotation to this quaternion that maps the given direction to the positive Z axis, and store the result indest.Quaternionfmul(float qx, float qy, float qz, float qw, Quaternionf dest)Multiply this quaternion by the quaternion represented via(qx, qy, qz, qw)and store the result indest.Quaternionfmul(float f, Quaternionf dest)Multiply this quaternion by the given scalar and store the result indest.Quaternionfmul(Quaternionfc q, Quaternionf dest)Multiply this quaternion byqand store the result indest.Quaternionfnlerp(Quaternionfc q, float factor, Quaternionf dest)Compute a linear (non-spherical) interpolation ofthisand the given quaternionqand store the result indest.QuaternionfnlerpIterative(Quaternionfc q, float alpha, float dotThreshold, Quaternionf dest)Compute linear (non-spherical) interpolations ofthisand the given quaternionqiteratively and store the result indest.Quaternionfnormalize(Quaternionf dest)Normalize this quaternion and store the result indest.Vector3fnormalizedPositiveX(Vector3f dir)Obtain the direction of+Xbefore the rotation transformation represented bythisnormalized quaternion is applied.Vector3fnormalizedPositiveY(Vector3f dir)Obtain the direction of+Ybefore the rotation transformation represented bythisnormalized quaternion is applied.Vector3fnormalizedPositiveZ(Vector3f dir)Obtain the direction of+Zbefore the rotation transformation represented bythisnormalized quaternion is applied.Vector3fpositiveX(Vector3f dir)Obtain the direction of+Xbefore the rotation transformation represented bythisquaternion is applied.Vector3fpositiveY(Vector3f dir)Obtain the direction of+Ybefore the rotation transformation represented bythisquaternion is applied.Vector3fpositiveZ(Vector3f dir)Obtain the direction of+Zbefore the rotation transformation represented bythisquaternion is applied.Quaternionfpremul(float qx, float qy, float qz, float qw, Quaternionf dest)Pre-multiply this quaternion by the quaternion represented via(qx, qy, qz, qw)and store the result indest.Quaternionfpremul(Quaternionfc q, Quaternionf dest)Pre-multiply this quaternion byqand store the result indest.QuaternionfrotateAxis(float angle, float axisX, float axisY, float axisZ, Quaternionf dest)Apply a rotation tothisquaternion rotating the given radians about the specified axis and store the result indest.QuaternionfrotateAxis(float angle, Vector3fc axis, Quaternionf dest)Apply a rotation tothisquaternion rotating the given radians about the specified axis and store the result indest.QuaternionfrotateLocalX(float angle, Quaternionf dest)Apply a rotation tothisquaternion rotating the given radians about the local x axis and store the result indest.QuaternionfrotateLocalY(float angle, Quaternionf dest)Apply a rotation tothisquaternion rotating the given radians about the local y axis and store the result indest.QuaternionfrotateLocalZ(float angle, Quaternionf dest)Apply a rotation tothisquaternion rotating the given radians about the local z axis and store the result indest.QuaternionfrotateTo(float fromDirX, float fromDirY, float fromDirZ, float toDirX, float toDirY, float toDirZ, Quaternionf dest)Apply a rotation tothisthat rotates thefromDirvector to point alongtoDirand store the result indest.QuaternionfrotateTo(Vector3fc fromDir, Vector3fc toDir, Quaternionf dest)Apply a rotation tothisthat rotates thefromDirvector to point alongtoDirand store the result indest.QuaternionfrotateX(float angle, Quaternionf dest)Apply a rotation tothisquaternion rotating the given radians about the x axis and store the result indest.QuaternionfrotateXYZ(float angleX, float angleY, float angleZ, Quaternionf dest)Apply a rotation tothisquaternion rotating the given radians about the cartesian base unit axes, called the euler angles using rotation sequenceXYZand store the result indest.QuaternionfrotateY(float angle, Quaternionf dest)Apply a rotation tothisquaternion rotating the given radians about the y axis and store the result indest.QuaternionfrotateYXZ(float angleY, float angleX, float angleZ, Quaternionf dest)Apply a rotation tothisquaternion rotating the given radians about the cartesian base unit axes, called the euler angles, using the rotation sequenceYXZand store the result indest.QuaternionfrotateZ(float angle, Quaternionf dest)Apply a rotation tothisquaternion rotating the given radians about the z axis and store the result indest.QuaternionfrotateZYX(float angleZ, float angleY, float angleX, Quaternionf dest)Apply a rotation tothisquaternion rotating the given radians about the cartesian base unit axes, called the euler angles, using the rotation sequenceZYXand store the result indest.Quaternionfscale(float factor, Quaternionf dest)Apply scaling to this quaternion, which results in any vector transformed by the quaternion to change its length by the givenfactor, and store the result indest.Quaternionfslerp(Quaternionfc target, float alpha, Quaternionf dest)Vector3dtransform(double x, double y, double z, Vector3d dest)Transform the given vector(x, y, z)by this quaternion and store the result indest.Vector4dtransform(double x, double y, double z, Vector4d dest)Transform the given vector(x, y, z)by this quaternion and store the result indest.Vector3dtransform(float x, float y, float z, Vector3d dest)Transform the given vector(x, y, z)by this quaternion and store the result indest.Vector3ftransform(float x, float y, float z, Vector3f dest)Transform the given vector(x, y, z)by this quaternion and store the result indest.Vector4ftransform(float x, float y, float z, Vector4f dest)Transform the given vector(x, y, z)by this quaternion and store the result indest.Vector3dtransform(Vector3d vec)Transform the given vector by this quaternion.Vector3dtransform(Vector3dc vec, Vector3d dest)Transform the given vector by this quaternion and store the result indest.Vector3ftransform(Vector3f vec)Transform the given vector by this quaternion.Vector3ftransform(Vector3fc vec, Vector3f dest)Transform the given vector by this quaternion and store the result indest.Vector4dtransform(Vector4d vec)Transform the given vector by this quaternion.Vector4dtransform(Vector4dc vec, Vector4d dest)Transform the given vector by this quaternion and store the result indest.Vector4ftransform(Vector4f vec)Transform the given vector by this quaternion.Vector4ftransform(Vector4fc vec, Vector4f dest)Transform the given vector by this quaternion and store the result indest.Vector3dtransformInverse(double x, double y, double z, Vector3d dest)Transform the given vector(x, y, z)by the inverse of this quaternion and store the result indest.Vector4dtransformInverse(double x, double y, double z, Vector4d dest)Transform the given vector(x, y, z)by the inverse of this quaternion and store the result indest.Vector3dtransformInverse(float x, float y, float z, Vector3d dest)Transform the given vector(x, y, z)by the inverse of this quaternion and store the result indest.Vector3ftransformInverse(float x, float y, float z, Vector3f dest)Transform the given vector(x, y, z)by the inverse of this quaternion and store the result indest.Vector4ftransformInverse(float x, float y, float z, Vector4f dest)Transform the given vector(x, y, z)by the inverse of this quaternion and store the result indest.Vector3dtransformInverse(Vector3d vec)Transform the given vector by the inverse of this quaternion.Vector3dtransformInverse(Vector3dc vec, Vector3d dest)Transform the given vector by the inverse of this quaternion and store the result indest.Vector3ftransformInverse(Vector3f vec)Transform the given vector by the inverse of this quaternion.Vector3ftransformInverse(Vector3fc vec, Vector3f dest)Transform the given vector by the inverse of quaternion and store the result indest.Vector4dtransformInverse(Vector4d vec)Transform the given vector by the inverse of this quaternion.Vector4dtransformInverse(Vector4dc vec, Vector4d dest)Transform the given vector by the inverse of this quaternion and store the result indest.Vector4ftransformInverse(Vector4f vec)Transform the given vector by the inverse of this quaternion.Vector4ftransformInverse(Vector4fc vec, Vector4f dest)Transform the given vector by the inverse of this quaternion and store the result indest.Vector3dtransformInverseUnit(double x, double y, double z, Vector3d dest)Transform the given vector(x, y, z)by the inverse of this unit quaternion and store the result indest.Vector4dtransformInverseUnit(double x, double y, double z, Vector4d dest)Transform the given vector(x, y, z)by the inverse of this unit quaternion and store the result indest.Vector3dtransformInverseUnit(float x, float y, float z, Vector3d dest)Transform the given vector(x, y, z)by the inverse of this unit quaternion and store the result indest.Vector3ftransformInverseUnit(float x, float y, float z, Vector3f dest)Transform the given vector(x, y, z)by the inverse of this unit quaternion and store the result indest.Vector4ftransformInverseUnit(float x, float y, float z, Vector4f dest)Transform the given vector(x, y, z)by the inverse of this unit quaternion and store the result indest.Vector3dtransformInverseUnit(Vector3dc vec, Vector3d dest)Transform the given vector by the inverse of this unit quaternion and store the result indest.Vector3ftransformInverseUnit(Vector3f vec)Transform the given vector by the inverse of this unit quaternion.Vector3ftransformInverseUnit(Vector3fc vec, Vector3f dest)Transform the given vector by the inverse of this unit quaternion and store the result indest.Vector4dtransformInverseUnit(Vector4d vec)Transform the given vector by the inverse of this unit quaternion.Vector4dtransformInverseUnit(Vector4dc vec, Vector4d dest)Transform the given vector by the inverse of this unit quaternion and store the result indest.Vector4ftransformInverseUnit(Vector4f vec)Transform the given vector by the inverse of this unit quaternion.Vector4ftransformInverseUnit(Vector4fc vec, Vector4f dest)Transform the given vector by the inverse of this unit quaternion and store the result indest.Vector3dtransformPositiveX(Vector3d dest)Transform the vector(1, 0, 0)by this quaternion.Vector3ftransformPositiveX(Vector3f dest)Transform the vector(1, 0, 0)by this quaternion.Vector4dtransformPositiveX(Vector4d dest)Transform the vector(1, 0, 0)by this quaternion.Vector4ftransformPositiveX(Vector4f dest)Transform the vector(1, 0, 0)by this quaternion.Vector3dtransformPositiveY(Vector3d dest)Transform the vector(0, 1, 0)by this quaternion.Vector3ftransformPositiveY(Vector3f dest)Transform the vector(0, 1, 0)by this quaternion.Vector4dtransformPositiveY(Vector4d dest)Transform the vector(0, 1, 0)by this quaternion.Vector4ftransformPositiveY(Vector4f dest)Transform the vector(0, 1, 0)by this quaternion.Vector3dtransformPositiveZ(Vector3d dest)Transform the vector(0, 0, 1)by this quaternion.Vector3ftransformPositiveZ(Vector3f dest)Transform the vector(0, 0, 1)by this quaternion.Vector4dtransformPositiveZ(Vector4d dest)Transform the vector(0, 0, 1)by this quaternion.Vector4ftransformPositiveZ(Vector4f dest)Transform the vector(0, 0, 1)by this quaternion.Vector3dtransformUnit(double x, double y, double z, Vector3d dest)Transform the given vector(x, y, z)by this unit quaternion and store the result indest.Vector4dtransformUnit(double x, double y, double z, Vector4d dest)Transform the given vector(x, y, z)by this unit quaternion and store the result indest.Vector3dtransformUnit(float x, float y, float z, Vector3d dest)Transform the given vector(x, y, z)by this unit quaternion and store the result indest.Vector3ftransformUnit(float x, float y, float z, Vector3f dest)Transform the given vector(x, y, z)by this unit quaternion and store the result indest.Vector4ftransformUnit(float x, float y, float z, Vector4f dest)Transform the given vector(x, y, z)by this unit quaternion and store the result indest.Vector3dtransformUnit(Vector3dc vec, Vector3d dest)Transform the given vector by this unit quaternion and store the result indest.Vector3ftransformUnit(Vector3f vec)Transform the given vector by this unit quaternion.Vector3ftransformUnit(Vector3fc vec, Vector3f dest)Transform the given vector by this unit quaternion and store the result indest.Vector4dtransformUnit(Vector4d vec)Transform the given vector by this unit quaternion.Vector4dtransformUnit(Vector4dc vec, Vector4d dest)Transform the given vector by this unit quaternion and store the result indest.Vector4ftransformUnit(Vector4f vec)Transform the given vector by this unit quaternion.Vector4ftransformUnit(Vector4fc vec, Vector4f dest)Transform the given vector by this unit quaternion and store the result indest.Vector3dtransformUnitPositiveX(Vector3d dest)Transform the vector(1, 0, 0)by this unit quaternion.Vector3ftransformUnitPositiveX(Vector3f dest)Transform the vector(1, 0, 0)by this unit quaternion.Vector4dtransformUnitPositiveX(Vector4d dest)Transform the vector(1, 0, 0)by this unit quaternion.Vector4ftransformUnitPositiveX(Vector4f dest)Transform the vector(1, 0, 0)by this unit quaternion.Vector3dtransformUnitPositiveY(Vector3d dest)Transform the vector(0, 1, 0)by this unit quaternion.Vector3ftransformUnitPositiveY(Vector3f dest)Transform the vector(0, 1, 0)by this unit quaternion.Vector4dtransformUnitPositiveY(Vector4d dest)Transform the vector(0, 1, 0)by this unit quaternion.Vector4ftransformUnitPositiveY(Vector4f dest)Transform the vector(0, 1, 0)by this unit quaternion.Vector3dtransformUnitPositiveZ(Vector3d dest)Transform the vector(0, 0, 1)by this unit quaternion.Vector3ftransformUnitPositiveZ(Vector3f dest)Transform the vector(0, 0, 1)by this unit quaternion.Vector4dtransformUnitPositiveZ(Vector4d dest)Transform the vector(0, 0, 1)by this unit quaternion.Vector4ftransformUnitPositiveZ(Vector4f dest)Transform the vector(0, 0, 1)by this unit quaternion.floatw()floatx()floaty()floatz()
-
-
-
Method Detail
-
x
float x()
- Returns:
- the first component of the vector part
-
y
float y()
- Returns:
- the second component of the vector part
-
z
float z()
- Returns:
- the third component of the vector part
-
w
float w()
- Returns:
- the real/scalar part of the quaternion
-
normalize
Quaternionf normalize(Quaternionf dest)
Normalize this quaternion and store the result indest.- Parameters:
dest- will hold the result- Returns:
- dest
-
add
Quaternionf add(float x, float y, float z, float w, Quaternionf dest)
Add the quaternion(x, y, z, w)to this quaternion and store the result indest.- Parameters:
x- the x component of the vector party- the y component of the vector partz- the z component of the vector partw- the real/scalar componentdest- will hold the result- Returns:
- dest
-
add
Quaternionf add(Quaternionfc q2, Quaternionf dest)
Addq2to this quaternion and store the result indest.- Parameters:
q2- the quaternion to add to thisdest- will hold the result- Returns:
- dest
-
angle
float angle()
Return the angle in radians represented by this normalized quaternion rotation.This quaternion must be
normalized.- Returns:
- the angle in radians
-
get
Matrix3f get(Matrix3f dest)
Set the given destination matrix to the rotation represented bythis.- Parameters:
dest- the matrix to write the rotation into- Returns:
- the passed in destination
- See Also:
Matrix3f.set(Quaternionfc)
-
get
Matrix3d get(Matrix3d dest)
Set the given destination matrix to the rotation represented bythis.- Parameters:
dest- the matrix to write the rotation into- Returns:
- the passed in destination
- See Also:
Matrix3d.set(Quaternionfc)
-
get
Matrix4f get(Matrix4f dest)
Set the given destination matrix to the rotation represented bythis.- Parameters:
dest- the matrix to write the rotation into- Returns:
- the passed in destination
- See Also:
Matrix4f.set(Quaternionfc)
-
get
Matrix4d get(Matrix4d dest)
Set the given destination matrix to the rotation represented bythis.- Parameters:
dest- the matrix to write the rotation into- Returns:
- the passed in destination
- See Also:
Matrix4d.set(Quaternionfc)
-
get
Matrix4x3f get(Matrix4x3f dest)
Set the given destination matrix to the rotation represented bythis.- Parameters:
dest- the matrix to write the rotation into- Returns:
- the passed in destination
- See Also:
Matrix4x3f.set(Quaternionfc)
-
get
Matrix4x3d get(Matrix4x3d dest)
Set the given destination matrix to the rotation represented bythis.- Parameters:
dest- the matrix to write the rotation into- Returns:
- the passed in destination
- See Also:
Matrix4x3d.set(Quaternionfc)
-
get
AxisAngle4f get(AxisAngle4f dest)
Set the givenAxisAngle4fto represent the rotation ofthisquaternion.- Parameters:
dest- theAxisAngle4fto set- Returns:
- the passed in destination
-
get
AxisAngle4d get(AxisAngle4d dest)
Set the givenAxisAngle4dto represent the rotation ofthisquaternion.- Parameters:
dest- theAxisAngle4dto set- Returns:
- the passed in destination
-
get
Quaterniond get(Quaterniond dest)
Set the givenQuaterniondto the values ofthis.- Parameters:
dest- theQuaterniondto set- Returns:
- the passed in destination
- See Also:
Quaterniond.set(Quaternionfc)
-
get
Quaternionf get(Quaternionf dest)
Set the givenQuaternionfto the values ofthis.- Parameters:
dest- theQuaternionfto set- Returns:
- the passed in destination
-
getAsMatrix3f
java.nio.ByteBuffer getAsMatrix3f(java.nio.ByteBuffer dest)
Store the 3x3 float matrix representation ofthisquaternion in column-major order into the givenByteBuffer.This is equivalent to calling:
this.get(new Matrix3f()).get(dest)- Parameters:
dest- the destination buffer- Returns:
- dest
-
getAsMatrix3f
java.nio.FloatBuffer getAsMatrix3f(java.nio.FloatBuffer dest)
Store the 3x3 float matrix representation ofthisquaternion in column-major order into the givenFloatBuffer.This is equivalent to calling:
this.get(new Matrix3f()).get(dest)- Parameters:
dest- the destination buffer- Returns:
- dest
-
getAsMatrix4f
java.nio.ByteBuffer getAsMatrix4f(java.nio.ByteBuffer dest)
Store the 4x4 float matrix representation ofthisquaternion in column-major order into the givenByteBuffer.This is equivalent to calling:
this.get(new Matrix4f()).get(dest)- Parameters:
dest- the destination buffer- Returns:
- dest
-
getAsMatrix4f
java.nio.FloatBuffer getAsMatrix4f(java.nio.FloatBuffer dest)
Store the 4x4 float matrix representation ofthisquaternion in column-major order into the givenFloatBuffer.This is equivalent to calling:
this.get(new Matrix4f()).get(dest)- Parameters:
dest- the destination buffer- Returns:
- dest
-
getAsMatrix4x3f
java.nio.ByteBuffer getAsMatrix4x3f(java.nio.ByteBuffer dest)
Store the 4x3 float matrix representation ofthisquaternion in column-major order into the givenByteBuffer.This is equivalent to calling:
this.get(new Matrix4x3f()).get(dest)- Parameters:
dest- the destination buffer- Returns:
- dest
-
getAsMatrix4x3f
java.nio.FloatBuffer getAsMatrix4x3f(java.nio.FloatBuffer dest)
Store the 4x3 float matrix representation ofthisquaternion in column-major order into the givenFloatBuffer.This is equivalent to calling:
this.get(new Matrix4x3f()).get(dest)- Parameters:
dest- the destination buffer- Returns:
- dest
-
mul
Quaternionf mul(Quaternionfc q, Quaternionf dest)
Multiply this quaternion byqand store the result indest.If
TisthisandQis the given quaternion, then the resulting quaternionRis:R = T * QSo, this method uses post-multiplication like the matrix classes, resulting in a vector to be transformed by
Qfirst, and then byT.- Parameters:
q- the quaternion to multiplythisbydest- will hold the result- Returns:
- dest
-
mul
Quaternionf mul(float qx, float qy, float qz, float qw, Quaternionf dest)
Multiply this quaternion by the quaternion represented via(qx, qy, qz, qw)and store the result indest.If
TisthisandQis the given quaternion, then the resulting quaternionRis:R = T * QSo, this method uses post-multiplication like the matrix classes, resulting in a vector to be transformed by
Qfirst, and then byT.- Parameters:
qx- the x component of the quaternion to multiplythisbyqy- the y component of the quaternion to multiplythisbyqz- the z component of the quaternion to multiplythisbyqw- the w component of the quaternion to multiplythisbydest- will hold the result- Returns:
- dest
-
mul
Quaternionf mul(float f, Quaternionf dest)
Multiply this quaternion by the given scalar and store the result indest.This method multiplies all of the four components by the specified scalar.
- Parameters:
f- the factor to multiply all components bydest- will hold the result- Returns:
- dest
-
premul
Quaternionf premul(Quaternionfc q, Quaternionf dest)
Pre-multiply this quaternion byqand store the result indest.If
TisthisandQis the given quaternion, then the resulting quaternionRis:R = Q * TSo, this method uses pre-multiplication, resulting in a vector to be transformed by
Tfirst, and then byQ.- Parameters:
q- the quaternion to pre-multiplythisbydest- will hold the result- Returns:
- dest
-
premul
Quaternionf premul(float qx, float qy, float qz, float qw, Quaternionf dest)
Pre-multiply this quaternion by the quaternion represented via(qx, qy, qz, qw)and store the result indest.If
TisthisandQis the given quaternion, then the resulting quaternionRis:R = Q * TSo, this method uses pre-multiplication, resulting in a vector to be transformed by
Tfirst, and then byQ.- Parameters:
qx- the x component of the quaternion to multiplythisbyqy- the y component of the quaternion to multiplythisbyqz- the z component of the quaternion to multiplythisbyqw- the w component of the quaternion to multiplythisbydest- will hold the result- Returns:
- dest
-
transform
Vector3f transform(Vector3f vec)
Transform the given vector by this quaternion.This will apply the rotation described by this quaternion to the given vector.
- Parameters:
vec- the vector to transform- Returns:
- vec
-
transformInverse
Vector3f transformInverse(Vector3f vec)
Transform the given vector by the inverse of this quaternion.This will apply the rotation described by this quaternion to the given vector.
- Parameters:
vec- the vector to transform- Returns:
- vec
-
transformUnit
Vector3f transformUnit(Vector3f vec)
Transform the given vector by this unit quaternion.This will apply the rotation described by this quaternion to the given vector.
This method is only applicable when
thisis a unit quaternion.- Parameters:
vec- the vector to transform- Returns:
- vec
-
transformPositiveX
Vector3f transformPositiveX(Vector3f dest)
Transform the vector(1, 0, 0)by this quaternion.- Parameters:
dest- will hold the result- Returns:
- dest
-
transformPositiveX
Vector4f transformPositiveX(Vector4f dest)
Transform the vector(1, 0, 0)by this quaternion.Only the first three components of the given 4D vector are modified.
- Parameters:
dest- will hold the result- Returns:
- dest
-
transformUnitPositiveX
Vector3f transformUnitPositiveX(Vector3f dest)
Transform the vector(1, 0, 0)by this unit quaternion.This method is only applicable when
thisis a unit quaternion.Reference: https://de.mathworks.com/
- Parameters:
dest- will hold the result- Returns:
- dest
-
transformUnitPositiveX
Vector4f transformUnitPositiveX(Vector4f dest)
Transform the vector(1, 0, 0)by this unit quaternion.Only the first three components of the given 4D vector are modified.
This method is only applicable when
thisis a unit quaternion.Reference: https://de.mathworks.com/
- Parameters:
dest- will hold the result- Returns:
- dest
-
transformPositiveY
Vector3f transformPositiveY(Vector3f dest)
Transform the vector(0, 1, 0)by this quaternion.- Parameters:
dest- will hold the result- Returns:
- dest
-
transformPositiveY
Vector4f transformPositiveY(Vector4f dest)
Transform the vector(0, 1, 0)by this quaternion.Only the first three components of the given 4D vector are modified.
- Parameters:
dest- will hold the result- Returns:
- dest
-
transformUnitPositiveY
Vector3f transformUnitPositiveY(Vector3f dest)
Transform the vector(0, 1, 0)by this unit quaternion.This method is only applicable when
thisis a unit quaternion.Reference: https://de.mathworks.com/
- Parameters:
dest- will hold the result- Returns:
- dest
-
transformUnitPositiveY
Vector4f transformUnitPositiveY(Vector4f dest)
Transform the vector(0, 1, 0)by this unit quaternion.Only the first three components of the given 4D vector are modified.
This method is only applicable when
thisis a unit quaternion.Reference: https://de.mathworks.com/
- Parameters:
dest- will hold the result- Returns:
- dest
-
transformPositiveZ
Vector3f transformPositiveZ(Vector3f dest)
Transform the vector(0, 0, 1)by this quaternion.- Parameters:
dest- will hold the result- Returns:
- dest
-
transformPositiveZ
Vector4f transformPositiveZ(Vector4f dest)
Transform the vector(0, 0, 1)by this quaternion.Only the first three components of the given 4D vector are modified.
- Parameters:
dest- will hold the result- Returns:
- dest
-
transformUnitPositiveZ
Vector3f transformUnitPositiveZ(Vector3f dest)
Transform the vector(0, 0, 1)by this unit quaternion.This method is only applicable when
thisis a unit quaternion.Reference: https://de.mathworks.com/
- Parameters:
dest- will hold the result- Returns:
- dest
-
transformUnitPositiveZ
Vector4f transformUnitPositiveZ(Vector4f dest)
Transform the vector(0, 0, 1)by this unit quaternion.Only the first three components of the given 4D vector are modified.
This method is only applicable when
thisis a unit quaternion.Reference: https://de.mathworks.com/
- Parameters:
dest- will hold the result- Returns:
- dest
-
transform
Vector4f transform(Vector4f vec)
Transform the given vector by this quaternion.This will apply the rotation described by this quaternion to the given vector.
Only the first three components of the given 4D vector are being used and modified.
- Parameters:
vec- the vector to transform- Returns:
- vec
-
transformInverse
Vector4f transformInverse(Vector4f vec)
Transform the given vector by the inverse of this quaternion.This will apply the rotation described by this quaternion to the given vector.
Only the first three components of the given 4D vector are being used and modified.
- Parameters:
vec- the vector to transform- Returns:
- vec
-
transform
Vector3f transform(Vector3fc vec, Vector3f dest)
Transform the given vector by this quaternion and store the result indest.This will apply the rotation described by this quaternion to the given vector.
- Parameters:
vec- the vector to transformdest- will hold the result- Returns:
- dest
-
transformInverse
Vector3f transformInverse(Vector3fc vec, Vector3f dest)
Transform the given vector by the inverse of quaternion and store the result indest.This will apply the rotation described by this quaternion to the given vector.
- Parameters:
vec- the vector to transformdest- will hold the result- Returns:
- dest
-
transform
Vector3f transform(float x, float y, float z, Vector3f dest)
Transform the given vector(x, y, z)by this quaternion and store the result indest.This will apply the rotation described by this quaternion to the given vector.
- Parameters:
x- the x coordinate of the vector to transformy- the y coordinate of the vector to transformz- the z coordinate of the vector to transformdest- will hold the result- Returns:
- dest
-
transform
Vector3d transform(float x, float y, float z, Vector3d dest)
Transform the given vector(x, y, z)by this quaternion and store the result indest.This will apply the rotation described by this quaternion to the given vector.
- Parameters:
x- the x coordinate of the vector to transformy- the y coordinate of the vector to transformz- the z coordinate of the vector to transformdest- will hold the result- Returns:
- dest
-
transformInverse
Vector3f transformInverse(float x, float y, float z, Vector3f dest)
Transform the given vector(x, y, z)by the inverse of this quaternion and store the result indest.This will apply the rotation described by this quaternion to the given vector.
- Parameters:
x- the x coordinate of the vector to transformy- the y coordinate of the vector to transformz- the z coordinate of the vector to transformdest- will hold the result- Returns:
- dest
-
transformInverse
Vector3d transformInverse(float x, float y, float z, Vector3d dest)
Transform the given vector(x, y, z)by the inverse of this quaternion and store the result indest.This will apply the rotation described by this quaternion to the given vector.
- Parameters:
x- the x coordinate of the vector to transformy- the y coordinate of the vector to transformz- the z coordinate of the vector to transformdest- will hold the result- Returns:
- dest
-
transformInverseUnit
Vector3f transformInverseUnit(Vector3f vec)
Transform the given vector by the inverse of this unit quaternion.This will apply the rotation described by this quaternion to the given vector.
This method is only applicable when
thisis a unit quaternion.- Parameters:
vec- the vector to transform- Returns:
- vec
-
transformUnit
Vector3f transformUnit(Vector3fc vec, Vector3f dest)
Transform the given vector by this unit quaternion and store the result indest.This will apply the rotation described by this quaternion to the given vector.
This method is only applicable when
thisis a unit quaternion.- Parameters:
vec- the vector to transformdest- will hold the result- Returns:
- dest
-
transformInverseUnit
Vector3f transformInverseUnit(Vector3fc vec, Vector3f dest)
Transform the given vector by the inverse of this unit quaternion and store the result indest.This will apply the rotation described by this quaternion to the given vector.
This method is only applicable when
thisis a unit quaternion.- Parameters:
vec- the vector to transformdest- will hold the result- Returns:
- dest
-
transformUnit
Vector3f transformUnit(float x, float y, float z, Vector3f dest)
Transform the given vector(x, y, z)by this unit quaternion and store the result indest.This will apply the rotation described by this quaternion to the given vector.
This method is only applicable when
thisis a unit quaternion.- Parameters:
x- the x coordinate of the vector to transformy- the y coordinate of the vector to transformz- the z coordinate of the vector to transformdest- will hold the result- Returns:
- dest
-
transformUnit
Vector3d transformUnit(float x, float y, float z, Vector3d dest)
Transform the given vector(x, y, z)by this unit quaternion and store the result indest.This will apply the rotation described by this quaternion to the given vector.
This method is only applicable when
thisis a unit quaternion.- Parameters:
x- the x coordinate of the vector to transformy- the y coordinate of the vector to transformz- the z coordinate of the vector to transformdest- will hold the result- Returns:
- dest
-
transformInverseUnit
Vector3f transformInverseUnit(float x, float y, float z, Vector3f dest)
Transform the given vector(x, y, z)by the inverse of this unit quaternion and store the result indest.This will apply the rotation described by this quaternion to the given vector.
This method is only applicable when
thisis a unit quaternion.- Parameters:
x- the x coordinate of the vector to transformy- the y coordinate of the vector to transformz- the z coordinate of the vector to transformdest- will hold the result- Returns:
- dest
-
transformInverseUnit
Vector3d transformInverseUnit(float x, float y, float z, Vector3d dest)
Transform the given vector(x, y, z)by the inverse of this unit quaternion and store the result indest.This will apply the rotation described by this quaternion to the given vector.
This method is only applicable when
thisis a unit quaternion.- Parameters:
x- the x coordinate of the vector to transformy- the y coordinate of the vector to transformz- the z coordinate of the vector to transformdest- will hold the result- Returns:
- dest
-
transform
Vector4f transform(Vector4fc vec, Vector4f dest)
Transform the given vector by this quaternion and store the result indest.This will apply the rotation described by this quaternion to the given vector.
Only the first three components of the given 4D vector are being used and set on the destination.
- Parameters:
vec- the vector to transformdest- will hold the result- Returns:
- dest
-
transformInverse
Vector4f transformInverse(Vector4fc vec, Vector4f dest)
Transform the given vector by the inverse of this quaternion and store the result indest.This will apply the rotation described by this quaternion to the given vector.
Only the first three components of the given 4D vector are being used and set on the destination.
- Parameters:
vec- the vector to transformdest- will hold the result- Returns:
- dest
-
transform
Vector4f transform(float x, float y, float z, Vector4f dest)
Transform the given vector(x, y, z)by this quaternion and store the result indest.This will apply the rotation described by this quaternion to the given vector.
- Parameters:
x- the x coordinate of the vector to transformy- the y coordinate of the vector to transformz- the z coordinate of the vector to transformdest- will hold the result- Returns:
- dest
-
transformInverse
Vector4f transformInverse(float x, float y, float z, Vector4f dest)
Transform the given vector(x, y, z)by the inverse of this quaternion and store the result indest.This will apply the rotation described by this quaternion to the given vector.
- Parameters:
x- the x coordinate of the vector to transformy- the y coordinate of the vector to transformz- the z coordinate of the vector to transformdest- will hold the result- Returns:
- dest
-
transformUnit
Vector4f transformUnit(Vector4fc vec, Vector4f dest)
Transform the given vector by this unit quaternion and store the result indest.This will apply the rotation described by this quaternion to the given vector.
Only the first three components of the given 4D vector are being used and set on the destination.
This method is only applicable when
thisis a unit quaternion.- Parameters:
vec- the vector to transformdest- will hold the result- Returns:
- dest
-
transformUnit
Vector4f transformUnit(Vector4f vec)
Transform the given vector by this unit quaternion.This will apply the rotation described by this quaternion to the given vector.
Only the first three components of the given 4D vector are being used and set on the destination.
This method is only applicable when
thisis a unit quaternion.- Parameters:
vec- the vector to transform- Returns:
- vec
-
transformInverseUnit
Vector4f transformInverseUnit(Vector4f vec)
Transform the given vector by the inverse of this unit quaternion.This will apply the rotation described by this quaternion to the given vector.
Only the first three components of the given 4D vector are being used and set on the destination.
This method is only applicable when
thisis a unit quaternion.- Parameters:
vec- the vector to transform- Returns:
- vec
-
transformInverseUnit
Vector4f transformInverseUnit(Vector4fc vec, Vector4f dest)
Transform the given vector by the inverse of this unit quaternion and store the result indest.This will apply the rotation described by this quaternion to the given vector.
Only the first three components of the given 4D vector are being used and set on the destination.
This method is only applicable when
thisis a unit quaternion.- Parameters:
vec- the vector to transformdest- will hold the result- Returns:
- dest
-
transformUnit
Vector4f transformUnit(float x, float y, float z, Vector4f dest)
Transform the given vector(x, y, z)by this unit quaternion and store the result indest.This will apply the rotation described by this quaternion to the given vector.
This method is only applicable when
thisis a unit quaternion.- Parameters:
x- the x coordinate of the vector to transformy- the y coordinate of the vector to transformz- the z coordinate of the vector to transformdest- will hold the result- Returns:
- dest
-
transformInverseUnit
Vector4f transformInverseUnit(float x, float y, float z, Vector4f dest)
Transform the given vector(x, y, z)by the inverse of this unit quaternion and store the result indest.This will apply the rotation described by this quaternion to the given vector.
This method is only applicable when
thisis a unit quaternion.- Parameters:
x- the x coordinate of the vector to transformy- the y coordinate of the vector to transformz- the z coordinate of the vector to transformdest- will hold the result- Returns:
- dest
-
transform
Vector3d transform(Vector3d vec)
Transform the given vector by this quaternion.This will apply the rotation described by this quaternion to the given vector.
- Parameters:
vec- the vector to transform- Returns:
- vec
-
transformInverse
Vector3d transformInverse(Vector3d vec)
Transform the given vector by the inverse of this quaternion.This will apply the rotation described by this quaternion to the given vector.
- Parameters:
vec- the vector to transform- Returns:
- vec
-
transformPositiveX
Vector3d transformPositiveX(Vector3d dest)
Transform the vector(1, 0, 0)by this quaternion.- Parameters:
dest- will hold the result- Returns:
- dest
-
transformPositiveX
Vector4d transformPositiveX(Vector4d dest)
Transform the vector(1, 0, 0)by this quaternion.Only the first three components of the given 4D vector are modified.
- Parameters:
dest- will hold the result- Returns:
- dest
-
transformUnitPositiveX
Vector3d transformUnitPositiveX(Vector3d dest)
Transform the vector(1, 0, 0)by this unit quaternion.This method is only applicable when
thisis a unit quaternion.Reference: https://de.mathworks.com/
- Parameters:
dest- will hold the result- Returns:
- dest
-
transformUnitPositiveX
Vector4d transformUnitPositiveX(Vector4d dest)
Transform the vector(1, 0, 0)by this unit quaternion.Only the first three components of the given 4D vector are modified.
This method is only applicable when
thisis a unit quaternion.Reference: https://de.mathworks.com/
- Parameters:
dest- will hold the result- Returns:
- dest
-
transformPositiveY
Vector3d transformPositiveY(Vector3d dest)
Transform the vector(0, 1, 0)by this quaternion.- Parameters:
dest- will hold the result- Returns:
- dest
-
transformPositiveY
Vector4d transformPositiveY(Vector4d dest)
Transform the vector(0, 1, 0)by this quaternion.Only the first three components of the given 4D vector are modified.
- Parameters:
dest- will hold the result- Returns:
- dest
-
transformUnitPositiveY
Vector3d transformUnitPositiveY(Vector3d dest)
Transform the vector(0, 1, 0)by this unit quaternion.This method is only applicable when
thisis a unit quaternion.Reference: https://de.mathworks.com/
- Parameters:
dest- will hold the result- Returns:
- dest
-
transformUnitPositiveY
Vector4d transformUnitPositiveY(Vector4d dest)
Transform the vector(0, 1, 0)by this unit quaternion.Only the first three components of the given 4D vector are modified.
This method is only applicable when
thisis a unit quaternion.Reference: https://de.mathworks.com/
- Parameters:
dest- will hold the result- Returns:
- dest
-
transformPositiveZ
Vector3d transformPositiveZ(Vector3d dest)
Transform the vector(0, 0, 1)by this quaternion.- Parameters:
dest- will hold the result- Returns:
- dest
-
transformPositiveZ
Vector4d transformPositiveZ(Vector4d dest)
Transform the vector(0, 0, 1)by this quaternion.Only the first three components of the given 4D vector are modified.
- Parameters:
dest- will hold the result- Returns:
- dest
-
transformUnitPositiveZ
Vector3d transformUnitPositiveZ(Vector3d dest)
Transform the vector(0, 0, 1)by this unit quaternion.This method is only applicable when
thisis a unit quaternion.Reference: https://de.mathworks.com/
- Parameters:
dest- will hold the result- Returns:
- dest
-
transformUnitPositiveZ
Vector4d transformUnitPositiveZ(Vector4d dest)
Transform the vector(0, 0, 1)by this unit quaternion.Only the first three components of the given 4D vector are modified.
This method is only applicable when
thisis a unit quaternion.Reference: https://de.mathworks.com/
- Parameters:
dest- will hold the result- Returns:
- dest
-
transform
Vector4d transform(Vector4d vec)
Transform the given vector by this quaternion.This will apply the rotation described by this quaternion to the given vector.
Only the first three components of the given 4D vector are being used and modified.
- Parameters:
vec- the vector to transform- Returns:
- vec
-
transformInverse
Vector4d transformInverse(Vector4d vec)
Transform the given vector by the inverse of this quaternion.This will apply the rotation described by this quaternion to the given vector.
Only the first three components of the given 4D vector are being used and modified.
- Parameters:
vec- the vector to transform- Returns:
- vec
-
transform
Vector3d transform(Vector3dc vec, Vector3d dest)
Transform the given vector by this quaternion and store the result indest.This will apply the rotation described by this quaternion to the given vector.
- Parameters:
vec- the vector to transformdest- will hold the result- Returns:
- dest
-
transformInverse
Vector3d transformInverse(Vector3dc vec, Vector3d dest)
Transform the given vector by the inverse of this quaternion and store the result indest.This will apply the rotation described by this quaternion to the given vector.
- Parameters:
vec- the vector to transformdest- will hold the result- Returns:
- dest
-
transform
Vector3d transform(double x, double y, double z, Vector3d dest)
Transform the given vector(x, y, z)by this quaternion and store the result indest.This will apply the rotation described by this quaternion to the given vector.
- Parameters:
x- the x coordinate of the vector to transformy- the y coordinate of the vector to transformz- the z coordinate of the vector to transformdest- will hold the result- Returns:
- dest
-
transformInverse
Vector3d transformInverse(double x, double y, double z, Vector3d dest)
Transform the given vector(x, y, z)by the inverse of this quaternion and store the result indest.This will apply the rotation described by this quaternion to the given vector.
- Parameters:
x- the x coordinate of the vector to transformy- the y coordinate of the vector to transformz- the z coordinate of the vector to transformdest- will hold the result- Returns:
- dest
-
transform
Vector4d transform(Vector4dc vec, Vector4d dest)
Transform the given vector by this quaternion and store the result indest.This will apply the rotation described by this quaternion to the given vector.
Only the first three components of the given 4D vector are being used and set on the destination.
- Parameters:
vec- the vector to transformdest- will hold the result- Returns:
- dest
-
transformInverse
Vector4d transformInverse(Vector4dc vec, Vector4d dest)
Transform the given vector by the inverse of this quaternion and store the result indest.This will apply the rotation described by this quaternion to the given vector.
Only the first three components of the given 4D vector are being used and set on the destination.
- Parameters:
vec- the vector to transformdest- will hold the result- Returns:
- dest
-
transform
Vector4d transform(double x, double y, double z, Vector4d dest)
Transform the given vector(x, y, z)by this quaternion and store the result indest.This will apply the rotation described by this quaternion to the given vector.
- Parameters:
x- the x coordinate of the vector to transformy- the y coordinate of the vector to transformz- the z coordinate of the vector to transformdest- will hold the result- Returns:
- dest
-
transformInverse
Vector4d transformInverse(double x, double y, double z, Vector4d dest)
Transform the given vector(x, y, z)by the inverse of this quaternion and store the result indest.This will apply the rotation described by this quaternion to the given vector.
- Parameters:
x- the x coordinate of the vector to transformy- the y coordinate of the vector to transformz- the z coordinate of the vector to transformdest- will hold the result- Returns:
- dest
-
transformUnit
Vector4d transformUnit(Vector4d vec)
Transform the given vector by this unit quaternion.This will apply the rotation described by this quaternion to the given vector.
Only the first three components of the given 4D vector are being used and modified.
This method is only applicable when
thisis a unit quaternion.- Parameters:
vec- the vector to transform- Returns:
- vec
-
transformInverseUnit
Vector4d transformInverseUnit(Vector4d vec)
Transform the given vector by the inverse of this unit quaternion.This will apply the rotation described by this quaternion to the given vector.
Only the first three components of the given 4D vector are being used and modified.
This method is only applicable when
thisis a unit quaternion.- Parameters:
vec- the vector to transform- Returns:
- vec
-
transformUnit
Vector3d transformUnit(Vector3dc vec, Vector3d dest)
Transform the given vector by this unit quaternion and store the result indest.This will apply the rotation described by this quaternion to the given vector.
This method is only applicable when
thisis a unit quaternion.- Parameters:
vec- the vector to transformdest- will hold the result- Returns:
- dest
-
transformInverseUnit
Vector3d transformInverseUnit(Vector3dc vec, Vector3d dest)
Transform the given vector by the inverse of this unit quaternion and store the result indest.This will apply the rotation described by this quaternion to the given vector.
This method is only applicable when
thisis a unit quaternion.- Parameters:
vec- the vector to transformdest- will hold the result- Returns:
- dest
-
transformUnit
Vector3d transformUnit(double x, double y, double z, Vector3d dest)
Transform the given vector(x, y, z)by this unit quaternion and store the result indest.This will apply the rotation described by this quaternion to the given vector.
This method is only applicable when
thisis a unit quaternion.- Parameters:
x- the x coordinate of the vector to transformy- the y coordinate of the vector to transformz- the z coordinate of the vector to transformdest- will hold the result- Returns:
- dest
-
transformInverseUnit
Vector3d transformInverseUnit(double x, double y, double z, Vector3d dest)
Transform the given vector(x, y, z)by the inverse of this unit quaternion and store the result indest.This will apply the rotation described by this quaternion to the given vector.
This method is only applicable when
thisis a unit quaternion.- Parameters:
x- the x coordinate of the vector to transformy- the y coordinate of the vector to transformz- the z coordinate of the vector to transformdest- will hold the result- Returns:
- dest
-
transformUnit
Vector4d transformUnit(Vector4dc vec, Vector4d dest)
Transform the given vector by this unit quaternion and store the result indest.This will apply the rotation described by this quaternion to the given vector.
Only the first three components of the given 4D vector are being used and set on the destination.
This method is only applicable when
thisis a unit quaternion.- Parameters:
vec- the vector to transformdest- will hold the result- Returns:
- dest
-
transformInverseUnit
Vector4d transformInverseUnit(Vector4dc vec, Vector4d dest)
Transform the given vector by the inverse of this unit quaternion and store the result indest.This will apply the rotation described by this quaternion to the given vector.
Only the first three components of the given 4D vector are being used and set on the destination.
This method is only applicable when
thisis a unit quaternion.- Parameters:
vec- the vector to transformdest- will hold the result- Returns:
- dest
-
transformUnit
Vector4d transformUnit(double x, double y, double z, Vector4d dest)
Transform the given vector(x, y, z)by this unit quaternion and store the result indest.This will apply the rotation described by this quaternion to the given vector.
This method is only applicable when
thisis a unit quaternion.- Parameters:
x- the x coordinate of the vector to transformy- the y coordinate of the vector to transformz- the z coordinate of the vector to transformdest- will hold the result- Returns:
- dest
-
transformInverseUnit
Vector4d transformInverseUnit(double x, double y, double z, Vector4d dest)
Transform the given vector(x, y, z)by the inverse of this unit quaternion and store the result indest.This will apply the rotation described by this quaternion to the given vector.
This method is only applicable when
thisis a unit quaternion.- Parameters:
x- the x coordinate of the vector to transformy- the y coordinate of the vector to transformz- the z coordinate of the vector to transformdest- will hold the result- Returns:
- dest
-
invert
Quaternionf invert(Quaternionf dest)
Invert this quaternion and store thenormalizedresult indest.If this quaternion is already normalized, then
conjugate(Quaternionf)should be used instead.- Parameters:
dest- will hold the result- Returns:
- dest
- See Also:
conjugate(Quaternionf)
-
div
Quaternionf div(Quaternionfc b, Quaternionf dest)
Dividethisquaternion byband store the result indest.The division expressed using the inverse is performed in the following way:
dest = this * b^-1, whereb^-1is the inverse ofb.- Parameters:
b- theQuaternionfcto divide this bydest- will hold the result- Returns:
- dest
-
conjugate
Quaternionf conjugate(Quaternionf dest)
Conjugate this quaternion and store the result indest.- Parameters:
dest- will hold the result- Returns:
- dest
-
rotateXYZ
Quaternionf rotateXYZ(float angleX, float angleY, float angleZ, Quaternionf dest)
Apply a rotation tothisquaternion rotating the given radians about the cartesian base unit axes, called the euler angles using rotation sequenceXYZand store the result indest.This method is equivalent to calling:
rotateX(angleX, dest).rotateY(angleY).rotateZ(angleZ)If
Qisthisquaternion andRthe quaternion representing the specified rotation, then the new quaternion will beQ * R. So when transforming a vectorvwith the new quaternion by usingQ * R * v, the rotation added by this method will be applied first!- Parameters:
angleX- the angle in radians to rotate about the x axisangleY- the angle in radians to rotate about the y axisangleZ- the angle in radians to rotate about the z axisdest- will hold the result- Returns:
- dest
-
rotateZYX
Quaternionf rotateZYX(float angleZ, float angleY, float angleX, Quaternionf dest)
Apply a rotation tothisquaternion rotating the given radians about the cartesian base unit axes, called the euler angles, using the rotation sequenceZYXand store the result indest.This method is equivalent to calling:
rotateZ(angleZ, dest).rotateY(angleY).rotateX(angleX)If
Qisthisquaternion andRthe quaternion representing the specified rotation, then the new quaternion will beQ * R. So when transforming a vectorvwith the new quaternion by usingQ * R * v, the rotation added by this method will be applied first!- Parameters:
angleZ- the angle in radians to rotate about the z axisangleY- the angle in radians to rotate about the y axisangleX- the angle in radians to rotate about the x axisdest- will hold the result- Returns:
- dest
-
rotateYXZ
Quaternionf rotateYXZ(float angleY, float angleX, float angleZ, Quaternionf dest)
Apply a rotation tothisquaternion rotating the given radians about the cartesian base unit axes, called the euler angles, using the rotation sequenceYXZand store the result indest.This method is equivalent to calling:
rotateY(angleY, dest).rotateX(angleX).rotateZ(angleZ)If
Qisthisquaternion andRthe quaternion representing the specified rotation, then the new quaternion will beQ * R. So when transforming a vectorvwith the new quaternion by usingQ * R * v, the rotation added by this method will be applied first!- Parameters:
angleY- the angle in radians to rotate about the y axisangleX- the angle in radians to rotate about the x axisangleZ- the angle in radians to rotate about the z axisdest- will hold the result- Returns:
- dest
-
getEulerAnglesXYZ
Vector3f getEulerAnglesXYZ(Vector3f eulerAngles)
Get the euler angles in radians in rotation sequenceXYZof this quaternion and store them in the provided parametereulerAngles.The Euler angles are always returned as the angle around X in the
Vector3f.xfield, the angle around Y in theVector3f.yfield and the angle around Z in theVector3f.zfield of the suppliedVector3finstance.- Parameters:
eulerAngles- will hold the euler angles in radians- Returns:
- the passed in vector
-
getEulerAnglesZYX
Vector3f getEulerAnglesZYX(Vector3f eulerAngles)
Get the euler angles in radians in rotation sequenceZYXof this quaternion and store them in the provided parametereulerAngles.The Euler angles are always returned as the angle around X in the
Vector3f.xfield, the angle around Y in theVector3f.yfield and the angle around Z in theVector3f.zfield of the suppliedVector3finstance.- Parameters:
eulerAngles- will hold the euler angles in radians- Returns:
- the passed in vector
-
getEulerAnglesZXY
Vector3f getEulerAnglesZXY(Vector3f eulerAngles)
Get the euler angles in radians in rotation sequenceZXYof this quaternion and store them in the provided parametereulerAngles.The Euler angles are always returned as the angle around X in the
Vector3f.xfield, the angle around Y in theVector3f.yfield and the angle around Z in theVector3f.zfield of the suppliedVector3finstance.- Parameters:
eulerAngles- will hold the euler angles in radians- Returns:
- the passed in vector
-
getEulerAnglesYXZ
Vector3f getEulerAnglesYXZ(Vector3f eulerAngles)
Get the euler angles in radians in rotation sequenceYXZof this quaternion and store them in the provided parametereulerAngles.The Euler angles are always returned as the angle around X in the
Vector3f.xfield, the angle around Y in theVector3f.yfield and the angle around Z in theVector3f.zfield of the suppliedVector3finstance.- Parameters:
eulerAngles- will hold the euler angles in radians- Returns:
- the passed in vector
-
lengthSquared
float lengthSquared()
Return the square of the length of this quaternion.- Returns:
- the length
-
slerp
Quaternionf slerp(Quaternionfc target, float alpha, Quaternionf dest)
Interpolate betweenthisunitquaternion and the specifiedtargetunitquaternion using spherical linear interpolation using the specified interpolation factoralpha, and store the result indest.This method resorts to non-spherical linear interpolation when the absolute dot product of
thisandtargetis below1E-6f.Reference: http://fabiensanglard.net
- Parameters:
target- the target of the interpolation, which should be reached withalpha = 1.0alpha- the interpolation factor, within[0..1]dest- will hold the result- Returns:
- dest
-
scale
Quaternionf scale(float factor, Quaternionf dest)
Apply scaling to this quaternion, which results in any vector transformed by the quaternion to change its length by the givenfactor, and store the result indest.- Parameters:
factor- the scaling factordest- will hold the result- Returns:
- dest
-
integrate
Quaternionf integrate(float dt, float vx, float vy, float vz, Quaternionf dest)
Integrate the rotation given by the angular velocity(vx, vy, vz)around the x, y and z axis, respectively, with respect to the given elapsed time deltadtand add the differentiate rotation to the rotation represented by this quaternion and store the result intodest.This method pre-multiplies the rotation given by
dtand(vx, vy, vz)bythis, so the angular velocities are always relative to the local coordinate system of the rotation represented bythisquaternion.This method is equivalent to calling:
rotateLocal(dt * vx, dt * vy, dt * vz, dest)Reference: http://physicsforgames.blogspot.de/
- Parameters:
dt- the delta timevx- the angular velocity around the x axisvy- the angular velocity around the y axisvz- the angular velocity around the z axisdest- will hold the result- Returns:
- dest
-
nlerp
Quaternionf nlerp(Quaternionfc q, float factor, Quaternionf dest)
Compute a linear (non-spherical) interpolation ofthisand the given quaternionqand store the result indest.Reference: http://fabiensanglard.net
- Parameters:
q- the other quaternionfactor- the interpolation factor. It is between 0.0 and 1.0dest- will hold the result- Returns:
- dest
-
nlerpIterative
Quaternionf nlerpIterative(Quaternionfc q, float alpha, float dotThreshold, Quaternionf dest)
Compute linear (non-spherical) interpolations ofthisand the given quaternionqiteratively and store the result indest.This method performs a series of small-step nlerp interpolations to avoid doing a costly spherical linear interpolation, like
slerp, by subdividing the rotation arc betweenthisandqvia non-spherical linear interpolations as long as the absolute dot product ofthisandqis greater than the givendotThresholdparameter.Thanks to
@theagentdat http://www.java-gaming.org/ for providing the code.- Parameters:
q- the other quaternionalpha- the interpolation factor, between 0.0 and 1.0dotThreshold- the threshold for the dot product ofthisandqabove which this method performs another iteration of a small-step linear interpolationdest- will hold the result- Returns:
- dest
-
lookAlong
Quaternionf lookAlong(Vector3fc dir, Vector3fc up, Quaternionf dest)
Apply a rotation to this quaternion that maps the given direction to the positive Z axis, and store the result indest.Because there are multiple possibilities for such a rotation, this method will choose the one that ensures the given up direction to remain parallel to the plane spanned by the
upanddirvectors.If
Qisthisquaternion andRthe quaternion representing the specified rotation, then the new quaternion will beQ * R. So when transforming a vectorvwith the new quaternion by usingQ * R * v, the rotation added by this method will be applied first!Reference: http://answers.unity3d.com
- Parameters:
dir- the direction to map to the positive Z axisup- the vector which will be mapped to a vector parallel to the plane spanned by the givendirandupdest- will hold the result- Returns:
- dest
- See Also:
lookAlong(float, float, float, float, float, float, Quaternionf)
-
lookAlong
Quaternionf lookAlong(float dirX, float dirY, float dirZ, float upX, float upY, float upZ, Quaternionf dest)
Apply a rotation to this quaternion that maps the given direction to the positive Z axis, and store the result indest.Because there are multiple possibilities for such a rotation, this method will choose the one that ensures the given up direction to remain parallel to the plane spanned by the
upanddirvectors.If
Qisthisquaternion andRthe quaternion representing the specified rotation, then the new quaternion will beQ * R. So when transforming a vectorvwith the new quaternion by usingQ * R * v, the rotation added by this method will be applied first!Reference: http://answers.unity3d.com
- Parameters:
dirX- the x-coordinate of the direction to look alongdirY- the y-coordinate of the direction to look alongdirZ- the z-coordinate of the direction to look alongupX- the x-coordinate of the up vectorupY- the y-coordinate of the up vectorupZ- the z-coordinate of the up vectordest- will hold the result- Returns:
- dest
-
rotateTo
Quaternionf rotateTo(float fromDirX, float fromDirY, float fromDirZ, float toDirX, float toDirY, float toDirZ, Quaternionf dest)
Apply a rotation tothisthat rotates thefromDirvector to point alongtoDirand store the result indest.Since there can be multiple possible rotations, this method chooses the one with the shortest arc.
If
Qisthisquaternion andRthe quaternion representing the specified rotation, then the new quaternion will beQ * R. So when transforming a vectorvwith the new quaternion by usingQ * R * v, the rotation added by this method will be applied first!Reference: stackoverflow.com
- Parameters:
fromDirX- the x-coordinate of the direction to rotate into the destination directionfromDirY- the y-coordinate of the direction to rotate into the destination directionfromDirZ- the z-coordinate of the direction to rotate into the destination directiontoDirX- the x-coordinate of the direction to rotate totoDirY- the y-coordinate of the direction to rotate totoDirZ- the z-coordinate of the direction to rotate todest- will hold the result- Returns:
- dest
-
rotateTo
Quaternionf rotateTo(Vector3fc fromDir, Vector3fc toDir, Quaternionf dest)
Apply a rotation tothisthat rotates thefromDirvector to point alongtoDirand store the result indest.Because there can be multiple possible rotations, this method chooses the one with the shortest arc.
If
Qisthisquaternion andRthe quaternion representing the specified rotation, then the new quaternion will beQ * R. So when transforming a vectorvwith the new quaternion by usingQ * R * v, the rotation added by this method will be applied first!- Parameters:
fromDir- the starting directiontoDir- the destination directiondest- will hold the result- Returns:
- dest
- See Also:
rotateTo(float, float, float, float, float, float, Quaternionf)
-
rotateX
Quaternionf rotateX(float angle, Quaternionf dest)
Apply a rotation tothisquaternion rotating the given radians about the x axis and store the result indest.If
Qisthisquaternion andRthe quaternion representing the specified rotation, then the new quaternion will beQ * R. So when transforming a vectorvwith the new quaternion by usingQ * R * v, the rotation added by this method will be applied first!- Parameters:
angle- the angle in radians to rotate about the x axisdest- will hold the result- Returns:
- dest
-
rotateY
Quaternionf rotateY(float angle, Quaternionf dest)
Apply a rotation tothisquaternion rotating the given radians about the y axis and store the result indest.If
Qisthisquaternion andRthe quaternion representing the specified rotation, then the new quaternion will beQ * R. So when transforming a vectorvwith the new quaternion by usingQ * R * v, the rotation added by this method will be applied first!- Parameters:
angle- the angle in radians to rotate about the y axisdest- will hold the result- Returns:
- dest
-
rotateZ
Quaternionf rotateZ(float angle, Quaternionf dest)
Apply a rotation tothisquaternion rotating the given radians about the z axis and store the result indest.If
Qisthisquaternion andRthe quaternion representing the specified rotation, then the new quaternion will beQ * R. So when transforming a vectorvwith the new quaternion by usingQ * R * v, the rotation added by this method will be applied first!- Parameters:
angle- the angle in radians to rotate about the z axisdest- will hold the result- Returns:
- dest
-
rotateLocalX
Quaternionf rotateLocalX(float angle, Quaternionf dest)
Apply a rotation tothisquaternion rotating the given radians about the local x axis and store the result indest.If
Qisthisquaternion andRthe quaternion representing the specified rotation, then the new quaternion will beR * Q. So when transforming a vectorvwith the new quaternion by usingR * Q * v, the rotation represented bythiswill be applied first!- Parameters:
angle- the angle in radians to rotate about the local x axisdest- will hold the result- Returns:
- dest
-
rotateLocalY
Quaternionf rotateLocalY(float angle, Quaternionf dest)
Apply a rotation tothisquaternion rotating the given radians about the local y axis and store the result indest.If
Qisthisquaternion andRthe quaternion representing the specified rotation, then the new quaternion will beR * Q. So when transforming a vectorvwith the new quaternion by usingR * Q * v, the rotation represented bythiswill be applied first!- Parameters:
angle- the angle in radians to rotate about the local y axisdest- will hold the result- Returns:
- dest
-
rotateLocalZ
Quaternionf rotateLocalZ(float angle, Quaternionf dest)
Apply a rotation tothisquaternion rotating the given radians about the local z axis and store the result indest.If
Qisthisquaternion andRthe quaternion representing the specified rotation, then the new quaternion will beR * Q. So when transforming a vectorvwith the new quaternion by usingR * Q * v, the rotation represented bythiswill be applied first!- Parameters:
angle- the angle in radians to rotate about the local z axisdest- will hold the result- Returns:
- dest
-
rotateAxis
Quaternionf rotateAxis(float angle, float axisX, float axisY, float axisZ, Quaternionf dest)
Apply a rotation tothisquaternion rotating the given radians about the specified axis and store the result indest.If
Qisthisquaternion andRthe quaternion representing the specified rotation, then the new quaternion will beQ * R. So when transforming a vectorvwith the new quaternion by usingQ * R * v, the rotation added by this method will be applied first!- Parameters:
angle- the angle in radians to rotate about the specified axisaxisX- the x coordinate of the rotation axisaxisY- the y coordinate of the rotation axisaxisZ- the z coordinate of the rotation axisdest- will hold the result- Returns:
- dest
-
rotateAxis
Quaternionf rotateAxis(float angle, Vector3fc axis, Quaternionf dest)
Apply a rotation tothisquaternion rotating the given radians about the specified axis and store the result indest.If
Qisthisquaternion andRthe quaternion representing the specified rotation, then the new quaternion will beQ * R. So when transforming a vectorvwith the new quaternion by usingQ * R * v, the rotation added by this method will be applied first!- Parameters:
angle- the angle in radians to rotate about the specified axisaxis- the rotation axisdest- will hold the result- Returns:
- dest
- See Also:
rotateAxis(float, float, float, float, Quaternionf)
-
difference
Quaternionf difference(Quaternionfc other, Quaternionf dest)
Compute the difference betweenthisand theotherquaternion and store the result indest.The difference is the rotation that has to be applied to get from
thisrotation toother. IfTisthis,QisotherandDis the computed difference, then the following equation holds:T * D = QIt is defined as:
D = T^-1 * Q, whereT^-1denotes theinverseofT.- Parameters:
other- the other quaterniondest- will hold the result- Returns:
- dest
-
positiveX
Vector3f positiveX(Vector3f dir)
Obtain the direction of+Xbefore the rotation transformation represented bythisquaternion is applied.This method is equivalent to the following code:
Quaternionf inv = new Quaternionf(this).invert(); inv.transform(dir.set(1, 0, 0));
- Parameters:
dir- will hold the direction of+X- Returns:
- dir
-
normalizedPositiveX
Vector3f normalizedPositiveX(Vector3f dir)
Obtain the direction of+Xbefore the rotation transformation represented bythisnormalized quaternion is applied. The quaternion must benormalizedfor this method to work.This method is equivalent to the following code:
Quaternionf inv = new Quaternionf(this).conjugate(); inv.transform(dir.set(1, 0, 0));
- Parameters:
dir- will hold the direction of+X- Returns:
- dir
-
positiveY
Vector3f positiveY(Vector3f dir)
Obtain the direction of+Ybefore the rotation transformation represented bythisquaternion is applied.This method is equivalent to the following code:
Quaternionf inv = new Quaternionf(this).invert(); inv.transform(dir.set(0, 1, 0));
- Parameters:
dir- will hold the direction of+Y- Returns:
- dir
-
normalizedPositiveY
Vector3f normalizedPositiveY(Vector3f dir)
Obtain the direction of+Ybefore the rotation transformation represented bythisnormalized quaternion is applied. The quaternion must benormalizedfor this method to work.This method is equivalent to the following code:
Quaternionf inv = new Quaternionf(this).conjugate(); inv.transform(dir.set(0, 1, 0));
- Parameters:
dir- will hold the direction of+Y- Returns:
- dir
-
positiveZ
Vector3f positiveZ(Vector3f dir)
Obtain the direction of+Zbefore the rotation transformation represented bythisquaternion is applied.This method is equivalent to the following code:
Quaternionf inv = new Quaternionf(this).invert(); inv.transform(dir.set(0, 0, 1));
- Parameters:
dir- will hold the direction of+Z- Returns:
- dir
-
normalizedPositiveZ
Vector3f normalizedPositiveZ(Vector3f dir)
Obtain the direction of+Zbefore the rotation transformation represented bythisnormalized quaternion is applied. The quaternion must benormalizedfor this method to work.This method is equivalent to the following code:
Quaternionf inv = new Quaternionf(this).conjugate(); inv.transform(dir.set(0, 0, 1));
- Parameters:
dir- will hold the direction of+Z- Returns:
- dir
-
conjugateBy
Quaternionf conjugateBy(Quaternionfc q, Quaternionf dest)
Conjugatethisby the given quaternionqby computingq * this * q^-1and store the result intodest.- Parameters:
q- theQuaternionfcto conjugatethisbydest- will hold the result- Returns:
- dest
-
isFinite
boolean isFinite()
Determine whether all components are finite floating-point values, that is, they are notNaNand notinfinity.- Returns:
trueif all components are finite floating-point values;falseotherwise
-
equals
boolean equals(Quaternionfc q, float delta)
Compare the quaternion components ofthisquaternion with the given quaternion using the givendeltaand return whether all of them are equal within a maximum difference ofdelta.Please note that this method is not used by any data structure such as
ArrayListHashSetorHashMapand their operations, such asArrayList.contains(Object)orHashSet.remove(Object), since those data structures only use theObject.equals(Object)andObject.hashCode()methods.- Parameters:
q- the other quaterniondelta- the allowed maximum difference- Returns:
truewhether all of the quaternion components are equal;falseotherwise
-
equals
boolean equals(float x, float y, float z, float w)- Parameters:
x- the x component to compare toy- the y component to compare toz- the z component to compare tow- the w component to compare to- Returns:
trueif all the quaternion components are equal
-
-