Class Quaterniond
- All Implemented Interfaces:
Externalizable
,Serializable
,Cloneable
,Quaterniondc
- Author:
- Richard Greenlees, Kai Burjack
- See Also:
-
Field Summary
-
Constructor Summary
ConstructorDescriptionCreate a newQuaterniond
and initialize it with(x=0, y=0, z=0, w=1)
, where(x, y, z)
is the vector part of the quaternion andw
is the real/scalar part.Quaterniond
(double x, double y, double z, double w) Create a newQuaterniond
and initialize its components to the given values.Quaterniond
(AxisAngle4d axisAngle) Create a newQuaterniond
and initialize it to represent the same rotation as the givenAxisAngle4d
.Quaterniond
(AxisAngle4f axisAngle) Create a newQuaterniond
and initialize it to represent the same rotation as the givenAxisAngle4f
.Quaterniond
(Quaterniondc source) Create a newQuaterniond
and initialize its components to the same values as the givenQuaterniondc
.Quaterniond
(Quaternionfc source) Create a newQuaterniond
and initialize its components to the same values as the givenQuaternionfc
. -
Method Summary
Modifier and TypeMethodDescriptionadd
(double x, double y, double z, double w) Add the quaternion(x, y, z, w)
to this quaternion.add
(double x, double y, double z, double w, Quaterniond dest) Add the quaternion(x, y, z, w)
to this quaternion and store the result indest
.add
(Quaterniondc q2) Addq2
to this quaternion.add
(Quaterniondc q2, Quaterniond dest) Addq2
to this quaternion and store the result indest
.double
angle()
Return the angle in radians represented by this normalized quaternion rotation.clone()
Conjugate this quaternion.conjugate
(Quaterniond dest) Conjugate this quaternion and store the result indest
.Conjugatethis
by the given quaternionq
by computingq * this * q^-1
.conjugateBy
(Quaterniondc q, Quaterniond dest) Conjugatethis
by the given quaternionq
by computingq * this * q^-1
and store the result intodest
.difference
(Quaterniondc other) Compute the difference betweenthis
and theother
quaternion and store the result inthis
.difference
(Quaterniondc other, Quaterniond dest) Compute the difference betweenthis
and theother
quaternion and store the result indest
.div
(Quaterniondc b) Dividethis
quaternion byb
.div
(Quaterniondc b, Quaterniond dest) Dividethis
quaternion byb
and store the result indest
.double
dot
(Quaterniondc otherQuat) Return the dot product of thisQuaterniond
andotherQuat
.boolean
equals
(double x, double y, double z, double w) boolean
boolean
equals
(Quaterniondc q, double delta) Compare the quaternion components ofthis
quaternion with the given quaternion using the givendelta
and return whether all of them are equal within a maximum difference ofdelta
.fromAxisAngleDeg
(double axisX, double axisY, double axisZ, double angle) Set this quaternion to be a representation of the supplied axis and angle (in degrees).fromAxisAngleDeg
(Vector3dc axis, double angle) Set this quaternion to be a representation of the supplied axis and angle (in degrees).fromAxisAngleRad
(double axisX, double axisY, double axisZ, double angle) Set this quaternion to be a representation of the supplied axis and angle (in radians).fromAxisAngleRad
(Vector3dc axis, double angle) Set this quaternion to be a representation of the supplied axis and angle (in radians).get
(AxisAngle4d dest) Set the givenAxisAngle4d
to represent the rotation ofthis
quaternion.get
(AxisAngle4f dest) Set the givenAxisAngle4f
to represent the rotation ofthis
quaternion.Set the given destination matrix to the rotation represented bythis
.Set the given destination matrix to the rotation represented bythis
.Set the given destination matrix to the rotation represented bythis
.Set the given destination matrix to the rotation represented bythis
.get
(Quaterniond dest) Set the givenQuaterniond
to the values ofthis
.get
(Quaternionf dest) Set the givenQuaternionf
to the values ofthis
.getEulerAnglesXYZ
(Vector3d eulerAngles) Get the euler angles in radians in rotation sequenceXYZ
of this quaternion and store them in the provided parametereulerAngles
.getEulerAnglesYXZ
(Vector3d eulerAngles) Get the euler angles in radians in rotation sequenceYXZ
of this quaternion and store them in the provided parametereulerAngles
.getEulerAnglesZXY
(Vector3d eulerAngles) Get the euler angles in radians in rotation sequenceZXY
of this quaternion and store them in the provided parametereulerAngles
.getEulerAnglesZYX
(Vector3d eulerAngles) Get the euler angles in radians in rotation sequenceZYX
of this quaternion and store them in the provided parametereulerAngles
.int
hashCode()
identity()
Set this quaternion to the identity.integrate
(double dt, double vx, double vy, double vz) 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 deltadt
and add the differentiate rotation to the rotation represented by this quaternion.integrate
(double dt, double vx, double vy, double vz, Quaterniond 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 deltadt
and add the differentiate rotation to the rotation represented by this quaternion and store the result intodest
.invert()
Invert this quaternion andnormalize
it.invert
(Quaterniond dest) Invert this quaternion and store thenormalized
result indest
.boolean
isFinite()
double
Return the square of the length of this quaternion.lookAlong
(double dirX, double dirY, double dirZ, double upX, double upY, double upZ) Apply a rotation to this quaternion that maps the given direction to the positive Z axis.lookAlong
(double dirX, double dirY, double dirZ, double upX, double upY, double upZ, Quaterniond dest) Apply a rotation to this quaternion that maps the given direction to the positive Z axis, and store the result indest
.Apply a rotation to this quaternion that maps the given direction to the positive Z axis.lookAlong
(Vector3dc dir, Vector3dc up, Quaterniond dest) Apply a rotation to this quaternion that maps the given direction to the positive Z axis, and store the result indest
.mul
(double f) Multiply this quaternion by the given scalar.mul
(double qx, double qy, double qz, double qw) Multiply this quaternion by the quaternion represented via(qx, qy, qz, qw)
.mul
(double qx, double qy, double qz, double qw, Quaterniond dest) Multiply this quaternion by the quaternion represented via(qx, qy, qz, qw)
and store the result indest
.mul
(double f, Quaterniond dest) Multiply this quaternion by the given scalar and store the result indest
.mul
(Quaterniondc q) Multiply this quaternion byq
.mul
(Quaterniondc q, Quaterniond dest) Multiply this quaternion byq
and store the result indest
.static Quaterniondc
nlerp
(Quaterniond[] qs, double[] weights, Quaterniond dest) Interpolate between all of the quaternions given inqs
via non-spherical linear interpolation using the specified interpolation factorsweights
, and store the result indest
.nlerp
(Quaterniondc q, double factor) Compute a linear (non-spherical) interpolation ofthis
and the given quaternionq
and store the result inthis
.nlerp
(Quaterniondc q, double factor, Quaterniond dest) Compute a linear (non-spherical) interpolation ofthis
and the given quaternionq
and store the result indest
.static Quaterniond
nlerpIterative
(Quaterniondc[] qs, double[] weights, double dotThreshold, Quaterniond dest) Interpolate between all of the quaternions given inqs
via iterative non-spherical linear interpolation using the specified interpolation factorsweights
, and store the result indest
.nlerpIterative
(Quaterniondc q, double alpha, double dotThreshold) Compute linear (non-spherical) interpolations ofthis
and the given quaternionq
iteratively and store the result inthis
.nlerpIterative
(Quaterniondc q, double alpha, double dotThreshold, Quaterniond dest) Compute linear (non-spherical) interpolations ofthis
and the given quaternionq
iteratively and store the result indest
.Normalize this quaternion.normalize
(Quaterniond dest) Normalize this quaternion and store the result indest
.Obtain the direction of+X
before the rotation transformation represented bythis
normalized quaternion is applied.Obtain the direction of+Y
before the rotation transformation represented bythis
normalized quaternion is applied.Obtain the direction of+Z
before the rotation transformation represented bythis
normalized quaternion is applied.Obtain the direction of+X
before the rotation transformation represented bythis
quaternion is applied.Obtain the direction of+Y
before the rotation transformation represented bythis
quaternion is applied.Obtain the direction of+Z
before the rotation transformation represented bythis
quaternion is applied.premul
(double qx, double qy, double qz, double qw) Pre-multiply this quaternion by the quaternion represented via(qx, qy, qz, qw)
.premul
(double qx, double qy, double qz, double qw, Quaterniond dest) Pre-multiply this quaternion by the quaternion represented via(qx, qy, qz, qw)
and store the result indest
.Pre-multiply this quaternion byq
.premul
(Quaterniondc q, Quaterniond dest) Pre-multiply this quaternion byq
and store the result indest
.void
rotateAxis
(double angle, double axisX, double axisY, double axisZ) Apply a rotation tothis
quaternion rotating the given radians about the specified axis.rotateAxis
(double angle, double axisX, double axisY, double axisZ, Quaterniond dest) Apply a rotation tothis
quaternion rotating the given radians about the specified axis and store the result indest
.rotateAxis
(double angle, Vector3dc axis) Apply a rotation tothis
quaternion rotating the given radians about the specified axis.rotateAxis
(double angle, Vector3dc axis, Quaterniond dest) Apply a rotation tothis
quaternion rotating the given radians about the specified axis and store the result indest
.rotateLocalX
(double angle) Apply a rotation tothis
quaternion rotating the given radians about the local x axis.rotateLocalX
(double angle, Quaterniond dest) Apply a rotation tothis
quaternion rotating the given radians about the local x axis and store the result indest
.rotateLocalY
(double angle) Apply a rotation tothis
quaternion rotating the given radians about the local y axis.rotateLocalY
(double angle, Quaterniond dest) Apply a rotation tothis
quaternion rotating the given radians about the local y axis and store the result indest
.rotateLocalZ
(double angle) Apply a rotation tothis
quaternion rotating the given radians about the local z axis.rotateLocalZ
(double angle, Quaterniond dest) Apply a rotation tothis
quaternion rotating the given radians about the local z axis and store the result indest
.rotateTo
(double fromDirX, double fromDirY, double fromDirZ, double toDirX, double toDirY, double toDirZ) Apply a rotation tothis
that rotates thefromDir
vector to point alongtoDir
.rotateTo
(double fromDirX, double fromDirY, double fromDirZ, double toDirX, double toDirY, double toDirZ, Quaterniond dest) Apply a rotation tothis
that rotates thefromDir
vector to point alongtoDir
and store the result indest
.Apply a rotation tothis
that rotates thefromDir
vector to point alongtoDir
.rotateTo
(Vector3dc fromDir, Vector3dc toDir, Quaterniond dest) Apply a rotation tothis
that rotates thefromDir
vector to point alongtoDir
and store the result indest
.rotateX
(double angle) Apply a rotation tothis
quaternion rotating the given radians about the x axis.rotateX
(double angle, Quaterniond dest) Apply a rotation tothis
quaternion rotating the given radians about the x axis and store the result indest
.rotateXYZ
(double angleX, double angleY, double angleZ) Apply a rotation tothis
quaternion rotating the given radians about the cartesian base unit axes, called the euler angles using rotation sequenceXYZ
.rotateXYZ
(double angleX, double angleY, double angleZ, Quaterniond dest) Apply a rotation tothis
quaternion rotating the given radians about the cartesian base unit axes, called the euler angles using rotation sequenceXYZ
and store the result indest
.rotateY
(double angle) Apply a rotation tothis
quaternion rotating the given radians about the y axis.rotateY
(double angle, Quaterniond dest) Apply a rotation tothis
quaternion rotating the given radians about the y axis and store the result indest
.rotateYXZ
(double angleY, double angleX, double angleZ) Apply a rotation tothis
quaternion rotating the given radians about the cartesian base unit axes, called the euler angles, using the rotation sequenceYXZ
.rotateYXZ
(double angleY, double angleX, double angleZ, Quaterniond dest) Apply a rotation tothis
quaternion rotating the given radians about the cartesian base unit axes, called the euler angles, using the rotation sequenceYXZ
and store the result indest
.rotateZ
(double angle) Apply a rotation tothis
quaternion rotating the given radians about the z axis.rotateZ
(double angle, Quaterniond dest) Apply a rotation tothis
quaternion rotating the given radians about the z axis and store the result indest
.rotateZYX
(double angleZ, double angleY, double angleX) Apply a rotation tothis
quaternion rotating the given radians about the cartesian base unit axes, called the euler angles, using the rotation sequenceZYX
.rotateZYX
(double angleZ, double angleY, double angleX, Quaterniond dest) Apply a rotation tothis
quaternion rotating the given radians about the cartesian base unit axes, called the euler angles, using the rotation sequenceZYX
and store the result indest
.rotationAxis
(double angle, double axisX, double axisY, double axisZ) Set this quaternion to a rotation of the given angle in radians about the supplied axis.rotationAxis
(AxisAngle4f axisAngle) Set thisQuaterniond
to a rotation of the given angle in radians about the supplied axis, all of which are specified via theAxisAngle4f
.rotationTo
(double fromDirX, double fromDirY, double fromDirZ, double toDirX, double toDirY, double toDirZ) Setthis
quaternion to a rotation that rotates thefromDir
vector to point alongtoDir
.rotationTo
(Vector3dc fromDir, Vector3dc toDir) Setthis
quaternion to a rotation that rotates thefromDir
vector to point alongtoDir
.rotationX
(double angle) Set this quaternion to represent a rotation of the given radians about the x axis.rotationXYZ
(double angleX, double angleY, double angleZ) Set this quaternion from the supplied euler angles (in radians) with rotation order XYZ.rotationY
(double angle) Set this quaternion to represent a rotation of the given radians about the y axis.rotationYXZ
(double angleY, double angleX, double angleZ) Set this quaternion from the supplied euler angles (in radians) with rotation order YXZ.rotationZ
(double angle) Set this quaternion to represent a rotation of the given radians about the z axis.rotationZYX
(double angleZ, double angleY, double angleX) Set this quaternion from the supplied euler angles (in radians) with rotation order ZYX.scale
(double factor) Apply scaling to this quaternion, which results in any vector transformed by this quaternion to change its length by the givenfactor
.scale
(double factor, Quaterniond 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
.scaling
(double factor) Set this quaternion to represent scaling, which results in a transformed vector to change its length by the givenfactor
.set
(double x, double y, double z, double w) Set this quaternion to the new values.set
(AxisAngle4d axisAngle) Set thisQuaterniond
to be equivalent to the givenAxisAngle4d
.set
(AxisAngle4f axisAngle) Set thisQuaterniond
to be equivalent to the givenAxisAngle4f
.set
(Quaterniondc q) Set this quaternion to be a copy of q.set
(Quaternionfc q) Set this quaternion to be a copy of q.setAngleAxis
(double angle, double x, double y, double z) Set this quaternion to a rotation equivalent to the supplied axis and angle (in radians).setAngleAxis
(double angle, Vector3dc axis) Set this quaternion to be a representation of the supplied axis and angle (in radians).Set this quaternion to be a representation of the rotational component of the given matrix.Set this quaternion to be a representation of the rotational component of the given matrix.Set this quaternion to be a representation of the rotational component of the given matrix.Set this quaternion to be a representation of the rotational component of the given matrix.Set this quaternion to be a representation of the rotational component of the given matrix.Set this quaternion to be a representation of the rotational component of the given matrix.Set this quaternion to be a representation of the rotational component of the given matrix.Set this quaternion to be a representation of the rotational component of the given matrix.Set this quaternion to be a representation of the rotational component of the given matrix.Set this quaternion to be a representation of the rotational component of the given matrix.Set this quaternion to be a representation of the rotational component of the given matrix.Set this quaternion to be a representation of the rotational component of the given matrix.static Quaterniondc
slerp
(Quaterniond[] qs, double[] weights, Quaterniond dest) Interpolate between all of the quaternions given inqs
via spherical linear interpolation using the specified interpolation factorsweights
, and store the result indest
.slerp
(Quaterniondc target, double alpha) slerp
(Quaterniondc target, double alpha, Quaterniond dest) toString()
Return a string representation of this quaternion.toString
(NumberFormat formatter) Return a string representation of this quaternion by formatting the components with the givenNumberFormat
.Transform the given vector(x, y, z)
by this quaternion and store the result indest
.Transform the given vector(x, y, z)
by this quaternion and store the result indest
.Transform the given vector(x, y, z)
by this quaternion and store the result indest
.Transform the given vector(x, y, z)
by this quaternion and store the result indest
.Transform the given vector by this quaternion.Transform the given vector by this quaternion and store the result indest
.Transform the given vector by this quaternion.Transform the given vector by this quaternion and store the result indest
.Transform the given vector by this quaternion.Transform the given vector by this quaternion and store the result indest
.Transform the given vector by this quaternion.Transform the given vector by this quaternion and store the result indest
.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
.transformInverse
(double x, double y, double z, Vector3f dest) Transform the given vector(x, y, z)
by the inverse of this quaternion and store the result indest
.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
.transformInverse
(double x, double y, double z, Vector4f dest) Transform the given vector(x, y, z)
by the inverse of this quaternion and store the result indest
.transformInverse
(Vector3d vec) Transform the given vector by the inverse of this quaternion.transformInverse
(Vector3dc vec, Vector3d dest) Transform the given vector by the inverse of this quaternion and store the result indest
.transformInverse
(Vector3f vec) Transform the given vector by the inverse of this quaternion.transformInverse
(Vector3fc vec, Vector3f dest) Transform the given vector by the inverse of this quaternion and store the result indest
.transformInverse
(Vector4d vec) Transform the given vector by the inverse of this quaternion.transformInverse
(Vector4dc vec, Vector4d dest) Transform the given vector by the inverse of this quaternion and store the result indest
.transformInverse
(Vector4f vec) Transform the given vector by the inverse of this quaternion.transformInverse
(Vector4fc vec, Vector4f dest) Transform the given vector by the inverse of this quaternion and store the result indest
.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
.transformInverseUnit
(double x, double y, double z, Vector3f dest) Transform the given vector(x, y, z)
by the inverse of this unit quaternion and store the result indest
.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
.transformInverseUnit
(double x, double y, double z, Vector4f dest) Transform the given vector(x, y, z)
by the inverse of this unit quaternion and store the result indest
.Transform the given vector by the inverse of this unit quaternion.transformInverseUnit
(Vector3dc vec, Vector3d dest) Transform the given vector by the inverse of this unit quaternion and store the result indest
.Transform the given vector by the inverse of this unit quaternion.transformInverseUnit
(Vector3fc vec, Vector3f dest) Transform the given vector by the inverse of this unit quaternion and store the result indest
.Transform the given vector by the inverse of this unit quaternion.transformInverseUnit
(Vector4dc vec, Vector4d dest) Transform the given vector by the inverse of this unit quaternion and store the result indest
.Transform the given vector by the inverse of this unit quaternion.transformInverseUnit
(Vector4fc vec, Vector4f dest) Transform the given vector by the inverse of this unit quaternion and store the result indest
.transformPositiveX
(Vector3d dest) Transform the vector(1, 0, 0)
by this quaternion.transformPositiveX
(Vector3f dest) Transform the vector(1, 0, 0)
by this quaternion.transformPositiveX
(Vector4d dest) Transform the vector(1, 0, 0)
by this quaternion.transformPositiveX
(Vector4f dest) Transform the vector(1, 0, 0)
by this quaternion.transformPositiveY
(Vector3d dest) Transform the vector(0, 1, 0)
by this quaternion.transformPositiveY
(Vector3f dest) Transform the vector(0, 1, 0)
by this quaternion.transformPositiveY
(Vector4d dest) Transform the vector(0, 1, 0)
by this quaternion.transformPositiveY
(Vector4f dest) Transform the vector(0, 1, 0)
by this quaternion.transformPositiveZ
(Vector3d dest) Transform the vector(0, 0, 1)
by this quaternion.transformPositiveZ
(Vector3f dest) Transform the vector(0, 0, 1)
by this quaternion.transformPositiveZ
(Vector4d dest) Transform the vector(0, 0, 1)
by this quaternion.transformPositiveZ
(Vector4f dest) Transform the vector(0, 0, 1)
by this quaternion.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
.transformUnit
(double x, double y, double z, Vector3f dest) Transform the given vector(x, y, z)
by this unit quaternion and store the result indest
.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
.transformUnit
(double x, double y, double z, Vector4f dest) Transform the given vector(x, y, z)
by this unit quaternion and store the result indest
.transformUnit
(Vector3d vec) Transform the given vector by this unit quaternion.transformUnit
(Vector3dc vec, Vector3d dest) Transform the given vector by this unit quaternion and store the result indest
.transformUnit
(Vector3f vec) Transform the given vector by this unit quaternion.transformUnit
(Vector3fc vec, Vector3f dest) Transform the given vector by this unit quaternion and store the result indest
.transformUnit
(Vector4d vec) Transform the given vector by this unit quaternion.transformUnit
(Vector4dc vec, Vector4d dest) Transform the given vector by this unit quaternion and store the result indest
.transformUnit
(Vector4f vec) Transform the given vector by this unit quaternion.transformUnit
(Vector4fc vec, Vector4f dest) Transform the given vector by this unit quaternion and store the result indest
.Transform the vector(1, 0, 0)
by this unit quaternion.Transform the vector(1, 0, 0)
by this unit quaternion.Transform the vector(1, 0, 0)
by this unit quaternion.Transform the vector(1, 0, 0)
by this unit quaternion.Transform the vector(0, 1, 0)
by this unit quaternion.Transform the vector(0, 1, 0)
by this unit quaternion.Transform the vector(0, 1, 0)
by this unit quaternion.Transform the vector(0, 1, 0)
by this unit quaternion.Transform the vector(0, 0, 1)
by this unit quaternion.Transform the vector(0, 0, 1)
by this unit quaternion.Transform the vector(0, 0, 1)
by this unit quaternion.Transform the vector(0, 0, 1)
by this unit quaternion.double
w()
void
double
x()
double
y()
double
z()
-
Field Details
-
x
public double xThe first component of the vector part. -
y
public double yThe second component of the vector part. -
z
public double zThe third component of the vector part. -
w
public double wThe real/scalar part of the quaternion.
-
-
Constructor Details
-
Quaterniond
public Quaterniond()Create a newQuaterniond
and initialize it with(x=0, y=0, z=0, w=1)
, where(x, y, z)
is the vector part of the quaternion andw
is the real/scalar part. -
Quaterniond
public Quaterniond(double x, double y, double z, double w) Create a newQuaterniond
and initialize its components to the given values.- Parameters:
x
- the first component of the imaginary party
- the second component of the imaginary partz
- the third component of the imaginary partw
- the real part
-
Quaterniond
Create a newQuaterniond
and initialize its components to the same values as the givenQuaterniondc
.- Parameters:
source
- theQuaterniondc
to take the component values from
-
Quaterniond
Create a newQuaterniond
and initialize its components to the same values as the givenQuaternionfc
.- Parameters:
source
- theQuaternionfc
to take the component values from
-
Quaterniond
Create a newQuaterniond
and initialize it to represent the same rotation as the givenAxisAngle4f
.- Parameters:
axisAngle
- the axis-angle to initialize this quaternion with
-
Quaterniond
Create a newQuaterniond
and initialize it to represent the same rotation as the givenAxisAngle4d
.- Parameters:
axisAngle
- the axis-angle to initialize this quaternion with
-
-
Method Details
-
x
public double x()- Specified by:
x
in interfaceQuaterniondc
- Returns:
- the first component of the vector part
-
y
public double y()- Specified by:
y
in interfaceQuaterniondc
- Returns:
- the second component of the vector part
-
z
public double z()- Specified by:
z
in interfaceQuaterniondc
- Returns:
- the third component of the vector part
-
w
public double w()- Specified by:
w
in interfaceQuaterniondc
- Returns:
- the real/scalar part of the quaternion
-
normalize
Normalize this quaternion.- Returns:
- this
-
normalize
Description copied from interface:Quaterniondc
Normalize this quaternion and store the result indest
.- Specified by:
normalize
in interfaceQuaterniondc
- Parameters:
dest
- will hold the result- Returns:
- dest
-
add
Add the quaternion(x, y, z, w)
to this quaternion.- 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 component- Returns:
- this
-
add
Description copied from interface:Quaterniondc
Add the quaternion(x, y, z, w)
to this quaternion and store the result indest
.- Specified by:
add
in interfaceQuaterniondc
- 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
Addq2
to this quaternion.- Parameters:
q2
- the quaternion to add to this- Returns:
- this
-
add
Description copied from interface:Quaterniondc
Addq2
to this quaternion and store the result indest
.- Specified by:
add
in interfaceQuaterniondc
- Parameters:
q2
- the quaternion to add to thisdest
- will hold the result- Returns:
- dest
-
dot
Description copied from interface:Quaterniondc
Return the dot product of thisQuaterniond
andotherQuat
.- Specified by:
dot
in interfaceQuaterniondc
- Parameters:
otherQuat
- the other quaternion- Returns:
- the dot product
-
angle
public double angle()Description copied from interface:Quaterniondc
Return the angle in radians represented by this normalized quaternion rotation.This quaternion must be
normalized
.- Specified by:
angle
in interfaceQuaterniondc
- Returns:
- the angle in radians
-
get
Description copied from interface:Quaterniondc
Set the given destination matrix to the rotation represented bythis
.- Specified by:
get
in interfaceQuaterniondc
- Parameters:
dest
- the matrix to write the rotation into- Returns:
- the passed in destination
- See Also:
-
get
Description copied from interface:Quaterniondc
Set the given destination matrix to the rotation represented bythis
.- Specified by:
get
in interfaceQuaterniondc
- Parameters:
dest
- the matrix to write the rotation into- Returns:
- the passed in destination
- See Also:
-
get
Description copied from interface:Quaterniondc
Set the given destination matrix to the rotation represented bythis
.- Specified by:
get
in interfaceQuaterniondc
- Parameters:
dest
- the matrix to write the rotation into- Returns:
- the passed in destination
- See Also:
-
get
Description copied from interface:Quaterniondc
Set the given destination matrix to the rotation represented bythis
.- Specified by:
get
in interfaceQuaterniondc
- Parameters:
dest
- the matrix to write the rotation into- Returns:
- the passed in destination
- See Also:
-
get
Description copied from interface:Quaterniondc
Set the givenAxisAngle4f
to represent the rotation ofthis
quaternion.- Specified by:
get
in interfaceQuaterniondc
- Parameters:
dest
- theAxisAngle4f
to set- Returns:
- the passed in destination
-
get
Description copied from interface:Quaterniondc
Set the givenAxisAngle4d
to represent the rotation ofthis
quaternion.- Specified by:
get
in interfaceQuaterniondc
- Parameters:
dest
- theAxisAngle4d
to set- Returns:
- the passed in destination
-
get
Set the givenQuaterniond
to the values ofthis
.- Specified by:
get
in interfaceQuaterniondc
- Parameters:
dest
- theQuaterniond
to set- Returns:
- the passed in destination
- See Also:
-
get
Set the givenQuaternionf
to the values ofthis
.- Specified by:
get
in interfaceQuaterniondc
- Parameters:
dest
- theQuaternionf
to set- Returns:
- the passed in destination
- See Also:
-
set
Set this quaternion to the new values.- Parameters:
x
- the new value of xy
- the new value of yz
- the new value of zw
- the new value of w- Returns:
- this
-
set
Set this quaternion to be a copy of q.- Parameters:
q
- theQuaterniondc
to copy- Returns:
- this
-
set
Set this quaternion to be a copy of q.- Parameters:
q
- theQuaternionfc
to copy- Returns:
- this
-
set
Set thisQuaterniond
to be equivalent to the givenAxisAngle4f
.- Parameters:
axisAngle
- theAxisAngle4f
- Returns:
- this
-
set
Set thisQuaterniond
to be equivalent to the givenAxisAngle4d
.- Parameters:
axisAngle
- theAxisAngle4d
- Returns:
- this
-
setAngleAxis
Set this quaternion to a rotation equivalent to the supplied axis and angle (in radians).This method assumes that the given rotation axis
(x, y, z)
is already normalized- Parameters:
angle
- the angle in radiansx
- the x-component of the normalized rotation axisy
- the y-component of the normalized rotation axisz
- the z-component of the normalized rotation axis- Returns:
- this
-
setAngleAxis
Set this quaternion to be a representation of the supplied axis and angle (in radians).- Parameters:
angle
- the angle in radiansaxis
- the rotation axis- Returns:
- this
-
setFromUnnormalized
Set this quaternion to be a representation of the rotational component of the given matrix.This method assumes that the first three columns of the upper left 3x3 submatrix are no unit vectors.
- Parameters:
mat
- the matrix whose rotational component is used to set this quaternion- Returns:
- this
-
setFromUnnormalized
Set this quaternion to be a representation of the rotational component of the given matrix.This method assumes that the first three columns of the upper left 3x3 submatrix are no unit vectors.
- Parameters:
mat
- the matrix whose rotational component is used to set this quaternion- Returns:
- this
-
setFromUnnormalized
Set this quaternion to be a representation of the rotational component of the given matrix.This method assumes that the first three columns of the upper left 3x3 submatrix are no unit vectors.
- Parameters:
mat
- the matrix whose rotational component is used to set this quaternion- Returns:
- this
-
setFromNormalized
Set this quaternion to be a representation of the rotational component of the given matrix.This method assumes that the first three columns of the upper left 3x3 submatrix are unit vectors.
- Parameters:
mat
- the matrix whose rotational component is used to set this quaternion- Returns:
- this
-
setFromNormalized
Set this quaternion to be a representation of the rotational component of the given matrix.This method assumes that the first three columns of the upper left 3x3 submatrix are unit vectors.
- Parameters:
mat
- the matrix whose rotational component is used to set this quaternion- Returns:
- this
-
setFromNormalized
Set this quaternion to be a representation of the rotational component of the given matrix.This method assumes that the first three columns of the upper left 3x3 submatrix are unit vectors.
- Parameters:
mat
- the matrix whose rotational component is used to set this quaternion- Returns:
- this
-
setFromUnnormalized
Set this quaternion to be a representation of the rotational component of the given matrix.This method assumes that the first three columns of the upper left 3x3 submatrix are no unit vectors.
- Parameters:
mat
- the matrix whose rotational component is used to set this quaternion- Returns:
- this
-
setFromNormalized
Set this quaternion to be a representation of the rotational component of the given matrix.This method assumes that the first three columns of the upper left 3x3 submatrix are unit vectors.
- Parameters:
mat
- the matrix whose rotational component is used to set this quaternion- Returns:
- this
-
setFromUnnormalized
Set this quaternion to be a representation of the rotational component of the given matrix.This method assumes that the first three columns of the upper left 3x3 submatrix are no unit vectors.
- Parameters:
mat
- the matrix whose rotational component is used to set this quaternion- Returns:
- this
-
setFromNormalized
Set this quaternion to be a representation of the rotational component of the given matrix.This method assumes that the first three columns of the upper left 3x3 submatrix are unit vectors.
- Parameters:
mat
- the matrix whose rotational component is used to set this quaternion- Returns:
- this
-
setFromUnnormalized
Set this quaternion to be a representation of the rotational component of the given matrix.This method assumes that the first three columns of the upper left 3x3 submatrix are no unit vectors.
- Parameters:
mat
- the matrix whose rotational component is used to set this quaternion- Returns:
- this
-
setFromNormalized
Set this quaternion to be a representation of the rotational component of the given matrix.- Parameters:
mat
- the matrix whose rotational component is used to set this quaternion- Returns:
- this
-
fromAxisAngleRad
Set this quaternion to be a representation of the supplied axis and angle (in radians).- Parameters:
axis
- the rotation axisangle
- the angle in radians- Returns:
- this
-
fromAxisAngleRad
Set this quaternion to be a representation of the supplied axis and angle (in radians).- Parameters:
axisX
- the x component of the rotation axisaxisY
- the y component of the rotation axisaxisZ
- the z component of the rotation axisangle
- the angle in radians- Returns:
- this
-
fromAxisAngleDeg
Set this quaternion to be a representation of the supplied axis and angle (in degrees).- Parameters:
axis
- the rotation axisangle
- the angle in degrees- Returns:
- this
-
fromAxisAngleDeg
Set this quaternion to be a representation of the supplied axis and angle (in degrees).- Parameters:
axisX
- the x component of the rotation axisaxisY
- the y component of the rotation axisaxisZ
- the z component of the rotation axisangle
- the angle in radians- Returns:
- this
-
mul
Multiply this quaternion byq
.If
T
isthis
andQ
is the given quaternion, then the resulting quaternionR
is:R = T * Q
So, this method uses post-multiplication like the matrix classes, resulting in a vector to be transformed by
Q
first, and then byT
.- Parameters:
q
- the quaternion to multiplythis
by- Returns:
- this
-
mul
Description copied from interface:Quaterniondc
Multiply this quaternion byq
and store the result indest
.If
T
isthis
andQ
is the given quaternion, then the resulting quaternionR
is:R = T * Q
So, this method uses post-multiplication like the matrix classes, resulting in a vector to be transformed by
Q
first, and then byT
.- Specified by:
mul
in interfaceQuaterniondc
- Parameters:
q
- the quaternion to multiplythis
bydest
- will hold the result- Returns:
- dest
-
mul
Multiply this quaternion by the quaternion represented via(qx, qy, qz, qw)
.If
T
isthis
andQ
is the given quaternion, then the resulting quaternionR
is:R = T * Q
So, this method uses post-multiplication like the matrix classes, resulting in a vector to be transformed by
Q
first, and then byT
.- Parameters:
qx
- the x component of the quaternion to multiplythis
byqy
- the y component of the quaternion to multiplythis
byqz
- the z component of the quaternion to multiplythis
byqw
- the w component of the quaternion to multiplythis
by- Returns:
- this
-
mul
Description copied from interface:Quaterniondc
Multiply this quaternion by the quaternion represented via(qx, qy, qz, qw)
and store the result indest
.If
T
isthis
andQ
is the given quaternion, then the resulting quaternionR
is:R = T * Q
So, this method uses post-multiplication like the matrix classes, resulting in a vector to be transformed by
Q
first, and then byT
.- Specified by:
mul
in interfaceQuaterniondc
- Parameters:
qx
- the x component of the quaternion to multiplythis
byqy
- the y component of the quaternion to multiplythis
byqz
- the z component of the quaternion to multiplythis
byqw
- the w component of the quaternion to multiplythis
bydest
- will hold the result- Returns:
- dest
-
mul
Multiply this quaternion by the given scalar.This method multiplies all of the four components by the specified scalar.
- Parameters:
f
- the factor to multiply all components by- Returns:
- this
-
mul
Description copied from interface:Quaterniondc
Multiply this quaternion by the given scalar and store the result indest
.This method multiplies all of the four components by the specified scalar.
- Specified by:
mul
in interfaceQuaterniondc
- Parameters:
f
- the factor to multiply all components bydest
- will hold the result- Returns:
- dest
-
premul
Pre-multiply this quaternion byq
.If
T
isthis
andQ
is the given quaternion, then the resulting quaternionR
is:R = Q * T
So, this method uses pre-multiplication, resulting in a vector to be transformed by
T
first, and then byQ
.- Parameters:
q
- the quaternion to pre-multiplythis
by- Returns:
- this
-
premul
Description copied from interface:Quaterniondc
Pre-multiply this quaternion byq
and store the result indest
.If
T
isthis
andQ
is the given quaternion, then the resulting quaternionR
is:R = Q * T
So, this method uses pre-multiplication, resulting in a vector to be transformed by
T
first, and then byQ
.- Specified by:
premul
in interfaceQuaterniondc
- Parameters:
q
- the quaternion to pre-multiplythis
bydest
- will hold the result- Returns:
- dest
-
premul
Pre-multiply this quaternion by the quaternion represented via(qx, qy, qz, qw)
.If
T
isthis
andQ
is the given quaternion, then the resulting quaternionR
is:R = Q * T
So, this method uses pre-multiplication, resulting in a vector to be transformed by
T
first, and then byQ
.- Parameters:
qx
- the x component of the quaternion to multiplythis
byqy
- the y component of the quaternion to multiplythis
byqz
- the z component of the quaternion to multiplythis
byqw
- the w component of the quaternion to multiplythis
by- Returns:
- this
-
premul
Description copied from interface:Quaterniondc
Pre-multiply this quaternion by the quaternion represented via(qx, qy, qz, qw)
and store the result indest
.If
T
isthis
andQ
is the given quaternion, then the resulting quaternionR
is:R = Q * T
So, this method uses pre-multiplication, resulting in a vector to be transformed by
T
first, and then byQ
.- Specified by:
premul
in interfaceQuaterniondc
- Parameters:
qx
- the x component of the quaternion to multiplythis
byqy
- the y component of the quaternion to multiplythis
byqz
- the z component of the quaternion to multiplythis
byqw
- the w component of the quaternion to multiplythis
bydest
- will hold the result- Returns:
- dest
-
transform
Description copied from interface:Quaterniondc
Transform the given vector by this quaternion.This will apply the rotation described by this quaternion to the given vector.
- Specified by:
transform
in interfaceQuaterniondc
- Parameters:
vec
- the vector to transform- Returns:
- vec
-
transformInverse
Description copied from interface:Quaterniondc
Transform the given vector by the inverse of this quaternion.This will apply the rotation described by this quaternion to the given vector.
- Specified by:
transformInverse
in interfaceQuaterniondc
- Parameters:
vec
- the vector to transform- Returns:
- vec
-
transformUnit
Description copied from interface:Quaterniondc
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
this
is a unit quaternion.- Specified by:
transformUnit
in interfaceQuaterniondc
- Parameters:
vec
- the vector to transform- Returns:
- vec
-
transformInverseUnit
Description copied from interface:Quaterniondc
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
this
is a unit quaternion.- Specified by:
transformInverseUnit
in interfaceQuaterniondc
- Parameters:
vec
- the vector to transform- Returns:
- vec
-
transformPositiveX
Description copied from interface:Quaterniondc
Transform the vector(1, 0, 0)
by this quaternion.- Specified by:
transformPositiveX
in interfaceQuaterniondc
- Parameters:
dest
- will hold the result- Returns:
- dest
-
transformPositiveX
Description copied from interface:Quaterniondc
Transform the vector(1, 0, 0)
by this quaternion.Only the first three components of the given 4D vector are modified.
- Specified by:
transformPositiveX
in interfaceQuaterniondc
- Parameters:
dest
- will hold the result- Returns:
- dest
-
transformUnitPositiveX
Description copied from interface:Quaterniondc
Transform the vector(1, 0, 0)
by this unit quaternion.This method is only applicable when
this
is a unit quaternion.Reference: https://de.mathworks.com/
- Specified by:
transformUnitPositiveX
in interfaceQuaterniondc
- Parameters:
dest
- will hold the result- Returns:
- dest
-
transformUnitPositiveX
Description copied from interface:Quaterniondc
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
this
is a unit quaternion.Reference: https://de.mathworks.com/
- Specified by:
transformUnitPositiveX
in interfaceQuaterniondc
- Parameters:
dest
- will hold the result- Returns:
- dest
-
transformPositiveY
Description copied from interface:Quaterniondc
Transform the vector(0, 1, 0)
by this quaternion.- Specified by:
transformPositiveY
in interfaceQuaterniondc
- Parameters:
dest
- will hold the result- Returns:
- dest
-
transformPositiveY
Description copied from interface:Quaterniondc
Transform the vector(0, 1, 0)
by this quaternion.Only the first three components of the given 4D vector are modified.
- Specified by:
transformPositiveY
in interfaceQuaterniondc
- Parameters:
dest
- will hold the result- Returns:
- dest
-
transformUnitPositiveY
Description copied from interface:Quaterniondc
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
this
is a unit quaternion.Reference: https://de.mathworks.com/
- Specified by:
transformUnitPositiveY
in interfaceQuaterniondc
- Parameters:
dest
- will hold the result- Returns:
- dest
-
transformUnitPositiveY
Description copied from interface:Quaterniondc
Transform the vector(0, 1, 0)
by this unit quaternion.This method is only applicable when
this
is a unit quaternion.Reference: https://de.mathworks.com/
- Specified by:
transformUnitPositiveY
in interfaceQuaterniondc
- Parameters:
dest
- will hold the result- Returns:
- dest
-
transformPositiveZ
Description copied from interface:Quaterniondc
Transform the vector(0, 0, 1)
by this quaternion.- Specified by:
transformPositiveZ
in interfaceQuaterniondc
- Parameters:
dest
- will hold the result- Returns:
- dest
-
transformPositiveZ
Description copied from interface:Quaterniondc
Transform the vector(0, 0, 1)
by this quaternion.Only the first three components of the given 4D vector are modified.
- Specified by:
transformPositiveZ
in interfaceQuaterniondc
- Parameters:
dest
- will hold the result- Returns:
- dest
-
transformUnitPositiveZ
Description copied from interface:Quaterniondc
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
this
is a unit quaternion.Reference: https://de.mathworks.com/
- Specified by:
transformUnitPositiveZ
in interfaceQuaterniondc
- Parameters:
dest
- will hold the result- Returns:
- dest
-
transformUnitPositiveZ
Description copied from interface:Quaterniondc
Transform the vector(0, 0, 1)
by this unit quaternion.This method is only applicable when
this
is a unit quaternion.Reference: https://de.mathworks.com/
- Specified by:
transformUnitPositiveZ
in interfaceQuaterniondc
- Parameters:
dest
- will hold the result- Returns:
- dest
-
transform
Description copied from interface:Quaterniondc
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.
- Specified by:
transform
in interfaceQuaterniondc
- Parameters:
vec
- the vector to transform- Returns:
- vec
-
transformInverse
Description copied from interface:Quaterniondc
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.
- Specified by:
transformInverse
in interfaceQuaterniondc
- Parameters:
vec
- the vector to transform- Returns:
- vec
-
transform
Description copied from interface:Quaterniondc
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.
- Specified by:
transform
in interfaceQuaterniondc
- Parameters:
vec
- the vector to transformdest
- will hold the result- Returns:
- dest
-
transformInverse
Description copied from interface:Quaterniondc
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.
- Specified by:
transformInverse
in interfaceQuaterniondc
- Parameters:
vec
- the vector to transformdest
- will hold the result- Returns:
- dest
-
transform
Description copied from interface:Quaterniondc
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.
- Specified by:
transform
in interfaceQuaterniondc
- 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
Description copied from interface:Quaterniondc
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.
- Specified by:
transformInverse
in interfaceQuaterniondc
- 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
Description copied from interface:Quaterniondc
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.
- Specified by:
transform
in interfaceQuaterniondc
- Parameters:
vec
- the vector to transformdest
- will hold the result- Returns:
- dest
-
transformInverse
Description copied from interface:Quaterniondc
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.
- Specified by:
transformInverse
in interfaceQuaterniondc
- Parameters:
vec
- the vector to transformdest
- will hold the result- Returns:
- dest
-
transform
Description copied from interface:Quaterniondc
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.
- Specified by:
transform
in interfaceQuaterniondc
- 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
Description copied from interface:Quaterniondc
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.
- Specified by:
transformInverse
in interfaceQuaterniondc
- 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
Description copied from interface:Quaterniondc
Transform the given vector by this quaternion.This will apply the rotation described by this quaternion to the given vector.
- Specified by:
transform
in interfaceQuaterniondc
- Parameters:
vec
- the vector to transform- Returns:
- vec
-
transformInverse
Description copied from interface:Quaterniondc
Transform the given vector by the inverse of this quaternion.This will apply the rotation described by this quaternion to the given vector.
- Specified by:
transformInverse
in interfaceQuaterniondc
- Parameters:
vec
- the vector to transform- Returns:
- vec
-
transformUnit
Description copied from interface:Quaterniondc
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
this
is a unit quaternion.- Specified by:
transformUnit
in interfaceQuaterniondc
- Parameters:
vec
- the vector to transform- Returns:
- vec
-
transformInverseUnit
Description copied from interface:Quaterniondc
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
this
is a unit quaternion.- Specified by:
transformInverseUnit
in interfaceQuaterniondc
- Parameters:
vec
- the vector to transform- Returns:
- vec
-
transformUnit
Description copied from interface:Quaterniondc
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
this
is a unit quaternion.- Specified by:
transformUnit
in interfaceQuaterniondc
- Parameters:
vec
- the vector to transformdest
- will hold the result- Returns:
- dest
-
transformInverseUnit
Description copied from interface:Quaterniondc
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
this
is a unit quaternion.- Specified by:
transformInverseUnit
in interfaceQuaterniondc
- Parameters:
vec
- the vector to transformdest
- will hold the result- Returns:
- dest
-
transformUnit
Description copied from interface:Quaterniondc
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
this
is a unit quaternion.- Specified by:
transformUnit
in interfaceQuaterniondc
- 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
Description copied from interface:Quaterniondc
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
this
is a unit quaternion.- Specified by:
transformInverseUnit
in interfaceQuaterniondc
- 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
Description copied from interface:Quaterniondc
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
this
is a unit quaternion.- Specified by:
transformUnit
in interfaceQuaterniondc
- Parameters:
vec
- the vector to transformdest
- will hold the result- Returns:
- dest
-
transformInverseUnit
Description copied from interface:Quaterniondc
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
this
is a unit quaternion.- Specified by:
transformInverseUnit
in interfaceQuaterniondc
- Parameters:
vec
- the vector to transformdest
- will hold the result- Returns:
- dest
-
transformUnit
Description copied from interface:Quaterniondc
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
this
is a unit quaternion.- Specified by:
transformUnit
in interfaceQuaterniondc
- 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
Description copied from interface:Quaterniondc
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
this
is a unit quaternion.- Specified by:
transformInverseUnit
in interfaceQuaterniondc
- 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
Description copied from interface:Quaterniondc
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
this
is a unit quaternion.- Specified by:
transformUnit
in interfaceQuaterniondc
- Parameters:
vec
- the vector to transform- Returns:
- vec
-
transformInverseUnit
Description copied from interface:Quaterniondc
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
this
is a unit quaternion.- Specified by:
transformInverseUnit
in interfaceQuaterniondc
- Parameters:
vec
- the vector to transform- Returns:
- vec
-
transformPositiveX
Description copied from interface:Quaterniondc
Transform the vector(1, 0, 0)
by this quaternion.- Specified by:
transformPositiveX
in interfaceQuaterniondc
- Parameters:
dest
- will hold the result- Returns:
- dest
-
transformPositiveX
Description copied from interface:Quaterniondc
Transform the vector(1, 0, 0)
by this quaternion.Only the first three components of the given 4D vector are modified.
- Specified by:
transformPositiveX
in interfaceQuaterniondc
- Parameters:
dest
- will hold the result- Returns:
- dest
-
transformUnitPositiveX
Description copied from interface:Quaterniondc
Transform the vector(1, 0, 0)
by this unit quaternion.This method is only applicable when
this
is a unit quaternion.Reference: https://de.mathworks.com/
- Specified by:
transformUnitPositiveX
in interfaceQuaterniondc
- Parameters:
dest
- will hold the result- Returns:
- dest
-
transformUnitPositiveX
Description copied from interface:Quaterniondc
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
this
is a unit quaternion.Reference: https://de.mathworks.com/
- Specified by:
transformUnitPositiveX
in interfaceQuaterniondc
- Parameters:
dest
- will hold the result- Returns:
- dest
-
transformPositiveY
Description copied from interface:Quaterniondc
Transform the vector(0, 1, 0)
by this quaternion.- Specified by:
transformPositiveY
in interfaceQuaterniondc
- Parameters:
dest
- will hold the result- Returns:
- dest
-
transformPositiveY
Description copied from interface:Quaterniondc
Transform the vector(0, 1, 0)
by this quaternion.Only the first three components of the given 4D vector are modified.
- Specified by:
transformPositiveY
in interfaceQuaterniondc
- Parameters:
dest
- will hold the result- Returns:
- dest
-
transformUnitPositiveY
Description copied from interface:Quaterniondc
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
this
is a unit quaternion.Reference: https://de.mathworks.com/
- Specified by:
transformUnitPositiveY
in interfaceQuaterniondc
- Parameters:
dest
- will hold the result- Returns:
- dest
-
transformUnitPositiveY
Description copied from interface:Quaterniondc
Transform the vector(0, 1, 0)
by this unit quaternion.This method is only applicable when
this
is a unit quaternion.Reference: https://de.mathworks.com/
- Specified by:
transformUnitPositiveY
in interfaceQuaterniondc
- Parameters:
dest
- will hold the result- Returns:
- dest
-
transformPositiveZ
Description copied from interface:Quaterniondc
Transform the vector(0, 0, 1)
by this quaternion.- Specified by:
transformPositiveZ
in interfaceQuaterniondc
- Parameters:
dest
- will hold the result- Returns:
- dest
-
transformPositiveZ
Description copied from interface:Quaterniondc
Transform the vector(0, 0, 1)
by this quaternion.Only the first three components of the given 4D vector are modified.
- Specified by:
transformPositiveZ
in interfaceQuaterniondc
- Parameters:
dest
- will hold the result- Returns:
- dest
-
transformUnitPositiveZ
Description copied from interface:Quaterniondc
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
this
is a unit quaternion.Reference: https://de.mathworks.com/
- Specified by:
transformUnitPositiveZ
in interfaceQuaterniondc
- Parameters:
dest
- will hold the result- Returns:
- dest
-
transformUnitPositiveZ
Description copied from interface:Quaterniondc
Transform the vector(0, 0, 1)
by this unit quaternion.This method is only applicable when
this
is a unit quaternion.Reference: https://de.mathworks.com/
- Specified by:
transformUnitPositiveZ
in interfaceQuaterniondc
- Parameters:
dest
- will hold the result- Returns:
- dest
-
transform
Description copied from interface:Quaterniondc
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.
- Specified by:
transform
in interfaceQuaterniondc
- Parameters:
vec
- the vector to transform- Returns:
- vec
-
transformInverse
Description copied from interface:Quaterniondc
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.
- Specified by:
transformInverse
in interfaceQuaterniondc
- Parameters:
vec
- the vector to transform- Returns:
- vec
-
transform
Description copied from interface:Quaterniondc
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.
- Specified by:
transform
in interfaceQuaterniondc
- Parameters:
vec
- the vector to transformdest
- will hold the result- Returns:
- dest
-
transformInverse
Description copied from interface:Quaterniondc
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.
- Specified by:
transformInverse
in interfaceQuaterniondc
- Parameters:
vec
- the vector to transformdest
- will hold the result- Returns:
- dest
-
transform
Description copied from interface:Quaterniondc
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.
- Specified by:
transform
in interfaceQuaterniondc
- 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
Description copied from interface:Quaterniondc
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.
- Specified by:
transformInverse
in interfaceQuaterniondc
- 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
Description copied from interface:Quaterniondc
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.
- Specified by:
transform
in interfaceQuaterniondc
- Parameters:
vec
- the vector to transformdest
- will hold the result- Returns:
- dest
-
transformInverse
Description copied from interface:Quaterniondc
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.
- Specified by:
transformInverse
in interfaceQuaterniondc
- Parameters:
vec
- the vector to transformdest
- will hold the result- Returns:
- dest
-
transform
Description copied from interface:Quaterniondc
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.
- Specified by:
transform
in interfaceQuaterniondc
- 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
Description copied from interface:Quaterniondc
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.
- Specified by:
transformInverse
in interfaceQuaterniondc
- 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
Description copied from interface:Quaterniondc
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
this
is a unit quaternion.- Specified by:
transformUnit
in interfaceQuaterniondc
- Parameters:
vec
- the vector to transform- Returns:
- vec
-
transformInverseUnit
Description copied from interface:Quaterniondc
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
this
is a unit quaternion.- Specified by:
transformInverseUnit
in interfaceQuaterniondc
- Parameters:
vec
- the vector to transform- Returns:
- vec
-
transformUnit
Description copied from interface:Quaterniondc
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
this
is a unit quaternion.- Specified by:
transformUnit
in interfaceQuaterniondc
- Parameters:
vec
- the vector to transformdest
- will hold the result- Returns:
- dest
-
transformInverseUnit
Description copied from interface:Quaterniondc
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
this
is a unit quaternion.- Specified by:
transformInverseUnit
in interfaceQuaterniondc
- Parameters:
vec
- the vector to transformdest
- will hold the result- Returns:
- dest
-
transformUnit
Description copied from interface:Quaterniondc
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
this
is a unit quaternion.- Specified by:
transformUnit
in interfaceQuaterniondc
- 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
Description copied from interface:Quaterniondc
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
this
is a unit quaternion.- Specified by:
transformInverseUnit
in interfaceQuaterniondc
- 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
Description copied from interface:Quaterniondc
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
this
is a unit quaternion.- Specified by:
transformUnit
in interfaceQuaterniondc
- Parameters:
vec
- the vector to transformdest
- will hold the result- Returns:
- dest
-
transformInverseUnit
Description copied from interface:Quaterniondc
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
this
is a unit quaternion.- Specified by:
transformInverseUnit
in interfaceQuaterniondc
- Parameters:
vec
- the vector to transformdest
- will hold the result- Returns:
- dest
-
transformUnit
Description copied from interface:Quaterniondc
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
this
is a unit quaternion.- Specified by:
transformUnit
in interfaceQuaterniondc
- 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
Description copied from interface:Quaterniondc
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
this
is a unit quaternion.- Specified by:
transformInverseUnit
in interfaceQuaterniondc
- 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
Description copied from interface:Quaterniondc
Invert this quaternion and store thenormalized
result indest
.If this quaternion is already normalized, then
Quaterniondc.conjugate(Quaterniond)
should be used instead.- Specified by:
invert
in interfaceQuaterniondc
- Parameters:
dest
- will hold the result- Returns:
- dest
- See Also:
-
invert
Invert this quaternion andnormalize
it.If this quaternion is already normalized, then
conjugate()
should be used instead.- Returns:
- this
- See Also:
-
div
Description copied from interface:Quaterniondc
Dividethis
quaternion byb
and store the result indest
.The division expressed using the inverse is performed in the following way:
dest = this * b^-1
, whereb^-1
is the inverse ofb
.- Specified by:
div
in interfaceQuaterniondc
- Parameters:
b
- theQuaterniondc
to divide this bydest
- will hold the result- Returns:
- dest
-
div
Dividethis
quaternion byb
.The division expressed using the inverse is performed in the following way:
this = this * b^-1
, whereb^-1
is the inverse ofb
.- Parameters:
b
- theQuaterniondc
to divide this by- Returns:
- this
-
conjugate
Conjugate this quaternion.- Returns:
- this
-
conjugate
Description copied from interface:Quaterniondc
Conjugate this quaternion and store the result indest
.- Specified by:
conjugate
in interfaceQuaterniondc
- Parameters:
dest
- will hold the result- Returns:
- dest
-
identity
Set this quaternion to the identity.- Returns:
- this
-
lengthSquared
public double lengthSquared()Description copied from interface:Quaterniondc
Return the square of the length of this quaternion.- Specified by:
lengthSquared
in interfaceQuaterniondc
- Returns:
- the length
-
rotationXYZ
Set this quaternion from the supplied euler angles (in radians) with rotation order XYZ.This method is equivalent to calling:
rotationX(angleX).rotateY(angleY).rotateZ(angleZ)
Reference: this stackexchange answer
- Parameters:
angleX
- the angle in radians to rotate about xangleY
- the angle in radians to rotate about yangleZ
- the angle in radians to rotate about z- Returns:
- this
-
rotationZYX
Set this quaternion from the supplied euler angles (in radians) with rotation order ZYX.This method is equivalent to calling:
rotationZ(angleZ).rotateY(angleY).rotateX(angleX)
Reference: this stackexchange answer
- Parameters:
angleX
- the angle in radians to rotate about xangleY
- the angle in radians to rotate about yangleZ
- the angle in radians to rotate about z- Returns:
- this
-
rotationYXZ
Set this quaternion from the supplied euler angles (in radians) with rotation order YXZ.This method is equivalent to calling:
rotationY(angleY).rotateX(angleX).rotateZ(angleZ)
Reference: https://en.wikipedia.org
- Parameters:
angleY
- the angle in radians to rotate about yangleX
- the angle in radians to rotate about xangleZ
- the angle in radians to rotate about z- Returns:
- this
-
slerp
Interpolate betweenthis
unit
quaternion and the specifiedtarget
unit
quaternion using spherical linear interpolation using the specified interpolation factoralpha
.This method resorts to non-spherical linear interpolation when the absolute dot product between
this
andtarget
is below1E-6
.- Parameters:
target
- the target of the interpolation, which should be reached withalpha = 1.0
alpha
- the interpolation factor, within[0..1]
- Returns:
- this
-
slerp
Description copied from interface:Quaterniondc
Interpolate betweenthis
unit
quaternion and the specifiedtarget
unit
quaternion 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 between
this
andtarget
is below1E-6
.Reference: http://fabiensanglard.net
- Specified by:
slerp
in interfaceQuaterniondc
- Parameters:
target
- the target of the interpolation, which should be reached withalpha = 1.0
alpha
- the interpolation factor, within[0..1]
dest
- will hold the result- Returns:
- dest
-
slerp
Interpolate between all of the quaternions given inqs
via spherical linear interpolation using the specified interpolation factorsweights
, and store the result indest
.This method will interpolate between each two successive quaternions via
slerp(Quaterniondc, double)
using their relative interpolation weights.This method resorts to non-spherical linear interpolation when the absolute dot product of any two interpolated quaternions is below
1E-6f
.Reference: http://gamedev.stackexchange.com/
- Parameters:
qs
- the quaternions to interpolate overweights
- the weights of each individual quaternion inqs
dest
- will hold the result- Returns:
- dest
-
scale
Apply scaling to this quaternion, which results in any vector transformed by this quaternion to change its length by the givenfactor
.- Parameters:
factor
- the scaling factor- Returns:
- this
-
scale
Description copied from interface:Quaterniondc
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
.- Specified by:
scale
in interfaceQuaterniondc
- Parameters:
factor
- the scaling factordest
- will hold the result- Returns:
- dest
-
scaling
Set this quaternion to represent scaling, which results in a transformed vector to change its length by the givenfactor
.- Parameters:
factor
- the scaling factor- Returns:
- this
-
integrate
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 deltadt
and add the differentiate rotation to the rotation represented by this quaternion.This method pre-multiplies the rotation given by
dt
and(vx, vy, vz)
bythis
, so the angular velocities are always relative to the local coordinate system of the rotation represented bythis
quaternion.This method is equivalent to calling:
rotateLocal(dt * vx, dt * vy, dt * vz)
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 axis- Returns:
- this
-
integrate
Description copied from interface:Quaterniondc
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 deltadt
and add the differentiate rotation to the rotation represented by this quaternion and store the result intodest
.This method pre-multiplies the rotation given by
dt
and(vx, vy, vz)
bythis
, so the angular velocities are always relative to the local coordinate system of the rotation represented bythis
quaternion.This method is equivalent to calling:
rotateLocal(dt * vx, dt * vy, dt * vz, dest)
Reference: http://physicsforgames.blogspot.de/
- Specified by:
integrate
in interfaceQuaterniondc
- 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
Compute a linear (non-spherical) interpolation ofthis
and the given quaternionq
and store the result inthis
.- Parameters:
q
- the other quaternionfactor
- the interpolation factor. It is between 0.0 and 1.0- Returns:
- this
-
nlerp
Description copied from interface:Quaterniondc
Compute a linear (non-spherical) interpolation ofthis
and the given quaternionq
and store the result indest
.Reference: http://fabiensanglard.net
- Specified by:
nlerp
in interfaceQuaterniondc
- Parameters:
q
- the other quaternionfactor
- the interpolation factor. It is between 0.0 and 1.0dest
- will hold the result- Returns:
- dest
-
nlerp
Interpolate between all of the quaternions given inqs
via non-spherical linear interpolation using the specified interpolation factorsweights
, and store the result indest
.This method will interpolate between each two successive quaternions via
nlerp(Quaterniondc, double)
using their relative interpolation weights.Reference: http://gamedev.stackexchange.com/
- Parameters:
qs
- the quaternions to interpolate overweights
- the weights of each individual quaternion inqs
dest
- will hold the result- Returns:
- dest
-
nlerpIterative
public Quaterniond nlerpIterative(Quaterniondc q, double alpha, double dotThreshold, Quaterniond dest) Description copied from interface:Quaterniondc
Compute linear (non-spherical) interpolations ofthis
and the given quaternionq
iteratively 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 betweenthis
andq
via non-spherical linear interpolations as long as the absolute dot product ofthis
andq
is greater than the givendotThreshold
parameter.Thanks to
@theagentd
at http://www.java-gaming.org/ for providing the code.- Specified by:
nlerpIterative
in interfaceQuaterniondc
- Parameters:
q
- the other quaternionalpha
- the interpolation factor, between 0.0 and 1.0dotThreshold
- the threshold for the dot product ofthis
andq
above which this method performs another iteration of a small-step linear interpolationdest
- will hold the result- Returns:
- dest
-
nlerpIterative
Compute linear (non-spherical) interpolations ofthis
and the given quaternionq
iteratively and store the result inthis
.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 betweenthis
andq
via non-spherical linear interpolations as long as the absolute dot product ofthis
andq
is greater than the givendotThreshold
parameter.Thanks to
@theagentd
at 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 ofthis
andq
above which this method performs another iteration of a small-step linear interpolation- Returns:
- this
-
nlerpIterative
public static Quaterniond nlerpIterative(Quaterniondc[] qs, double[] weights, double dotThreshold, Quaterniond dest) Interpolate between all of the quaternions given inqs
via iterative non-spherical linear interpolation using the specified interpolation factorsweights
, and store the result indest
.This method will interpolate between each two successive quaternions via
nlerpIterative(Quaterniondc, double, double)
using their relative interpolation weights.Reference: http://gamedev.stackexchange.com/
- Parameters:
qs
- the quaternions to interpolate overweights
- the weights of each individual quaternion inqs
dotThreshold
- the threshold for the dot product of each two interpolated quaternions above whichnlerpIterative(Quaterniondc, double, double)
performs another iteration of a small-step linear interpolationdest
- will hold the result- Returns:
- dest
-
lookAlong
Apply a rotation to this quaternion that maps the given direction to the positive Z axis.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
up
anddir
vectors.If
Q
isthis
quaternion andR
the quaternion representing the specified rotation, then the new quaternion will beQ * R
. So when transforming a vectorv
with 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 givendir
andup
- Returns:
- this
- See Also:
-
lookAlong
Description copied from interface:Quaterniondc
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
up
anddir
vectors.If
Q
isthis
quaternion andR
the quaternion representing the specified rotation, then the new quaternion will beQ * R
. So when transforming a vectorv
with the new quaternion by usingQ * R * v
, the rotation added by this method will be applied first!Reference: http://answers.unity3d.com
- Specified by:
lookAlong
in interfaceQuaterniondc
- 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 givendir
andup
dest
- will hold the result- Returns:
- dest
- See Also:
-
lookAlong
public Quaterniond lookAlong(double dirX, double dirY, double dirZ, double upX, double upY, double upZ) Apply a rotation to this quaternion that maps the given direction to the positive Z axis.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
up
anddir
vectors.If
Q
isthis
quaternion andR
the quaternion representing the specified rotation, then the new quaternion will beQ * R
. So when transforming a vectorv
with 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 vector- Returns:
- this
- See Also:
-
lookAlong
public Quaterniond lookAlong(double dirX, double dirY, double dirZ, double upX, double upY, double upZ, Quaterniond dest) Description copied from interface:Quaterniondc
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
up
anddir
vectors.If
Q
isthis
quaternion andR
the quaternion representing the specified rotation, then the new quaternion will beQ * R
. So when transforming a vectorv
with the new quaternion by usingQ * R * v
, the rotation added by this method will be applied first!Reference: http://answers.unity3d.com
- Specified by:
lookAlong
in interfaceQuaterniondc
- 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
-
toString
Return a string representation of this quaternion.This method creates a new
DecimalFormat
on every invocation with the format string "0.000E0;-
". -
toString
Return a string representation of this quaternion by formatting the components with the givenNumberFormat
.- Parameters:
formatter
- theNumberFormat
used to format the quaternion components with- Returns:
- the string representation
-
writeExternal
- Specified by:
writeExternal
in interfaceExternalizable
- Throws:
IOException
-
readExternal
- Specified by:
readExternal
in interfaceExternalizable
- Throws:
IOException
ClassNotFoundException
-
hashCode
public int hashCode() -
equals
-
difference
Compute the difference betweenthis
and theother
quaternion and store the result inthis
.The difference is the rotation that has to be applied to get from
this
rotation toother
. IfT
isthis
,Q
isother
andD
is the computed difference, then the following equation holds:T * D = Q
It is defined as:
D = T^-1 * Q
, whereT^-1
denotes theinverse
ofT
.- Parameters:
other
- the other quaternion- Returns:
- this
-
difference
Description copied from interface:Quaterniondc
Compute the difference betweenthis
and theother
quaternion and store the result indest
.The difference is the rotation that has to be applied to get from
this
rotation toother
. IfT
isthis
,Q
isother
andD
is the computed difference, then the following equation holds:T * D = Q
It is defined as:
D = T^-1 * Q
, whereT^-1
denotes theinverse
ofT
.- Specified by:
difference
in interfaceQuaterniondc
- Parameters:
other
- the other quaterniondest
- will hold the result- Returns:
- dest
-
rotationTo
public Quaterniond rotationTo(double fromDirX, double fromDirY, double fromDirZ, double toDirX, double toDirY, double toDirZ) Setthis
quaternion to a rotation that rotates thefromDir
vector to point alongtoDir
.Since there can be multiple possible rotations, this method chooses the one with the shortest arc.
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 to- Returns:
- this
-
rotationTo
Setthis
quaternion to a rotation that rotates thefromDir
vector to point alongtoDir
.Because there can be multiple possible rotations, this method chooses the one with the shortest arc.
- Parameters:
fromDir
- the starting directiontoDir
- the destination direction- Returns:
- this
- See Also:
-
rotateTo
public Quaterniond rotateTo(double fromDirX, double fromDirY, double fromDirZ, double toDirX, double toDirY, double toDirZ, Quaterniond dest) Description copied from interface:Quaterniondc
Apply a rotation tothis
that rotates thefromDir
vector to point alongtoDir
and store the result indest
.Since there can be multiple possible rotations, this method chooses the one with the shortest arc.
If
Q
isthis
quaternion andR
the quaternion representing the specified rotation, then the new quaternion will beQ * R
. So when transforming a vectorv
with the new quaternion by usingQ * R * v
, the rotation added by this method will be applied first!Reference: stackoverflow.com
- Specified by:
rotateTo
in interfaceQuaterniondc
- 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
-
rotationAxis
Set thisQuaterniond
to a rotation of the given angle in radians about the supplied axis, all of which are specified via theAxisAngle4f
.- Parameters:
axisAngle
- theAxisAngle4f
giving the rotation angle in radians and the axis to rotate about- Returns:
- this
- See Also:
-
rotationAxis
Set this quaternion to a rotation of the given angle in radians about the supplied axis.- Parameters:
angle
- the rotation angle in radiansaxisX
- the x-coordinate of the rotation axisaxisY
- the y-coordinate of the rotation axisaxisZ
- the z-coordinate of the rotation axis- Returns:
- this
-
rotationX
Set this quaternion to represent a rotation of the given radians about the x axis.- Parameters:
angle
- the angle in radians to rotate about the x axis- Returns:
- this
-
rotationY
Set this quaternion to represent a rotation of the given radians about the y axis.- Parameters:
angle
- the angle in radians to rotate about the y axis- Returns:
- this
-
rotationZ
Set this quaternion to represent a rotation of the given radians about the z axis.- Parameters:
angle
- the angle in radians to rotate about the z axis- Returns:
- this
-
rotateTo
public Quaterniond rotateTo(double fromDirX, double fromDirY, double fromDirZ, double toDirX, double toDirY, double toDirZ) Apply a rotation tothis
that rotates thefromDir
vector to point alongtoDir
.Since there can be multiple possible rotations, this method chooses the one with the shortest arc.
If
Q
isthis
quaternion andR
the quaternion representing the specified rotation, then the new quaternion will beQ * R
. So when transforming a vectorv
with the new quaternion by usingQ * R * v
, the rotation added by this method will be applied first!- 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 to- Returns:
- this
- See Also:
-
rotateTo
Description copied from interface:Quaterniondc
Apply a rotation tothis
that rotates thefromDir
vector to point alongtoDir
and store the result indest
.Because there can be multiple possible rotations, this method chooses the one with the shortest arc.
If
Q
isthis
quaternion andR
the quaternion representing the specified rotation, then the new quaternion will beQ * R
. So when transforming a vectorv
with the new quaternion by usingQ * R * v
, the rotation added by this method will be applied first!- Specified by:
rotateTo
in interfaceQuaterniondc
- Parameters:
fromDir
- the starting directiontoDir
- the destination directiondest
- will hold the result- Returns:
- dest
- See Also:
-
rotateTo
Apply a rotation tothis
that rotates thefromDir
vector to point alongtoDir
.Because there can be multiple possible rotations, this method chooses the one with the shortest arc.
If
Q
isthis
quaternion andR
the quaternion representing the specified rotation, then the new quaternion will beQ * R
. So when transforming a vectorv
with the new quaternion by usingQ * R * v
, the rotation added by this method will be applied first!- Parameters:
fromDir
- the starting directiontoDir
- the destination direction- Returns:
- this
- See Also:
-
rotateX
Apply a rotation tothis
quaternion rotating the given radians about the x axis.If
Q
isthis
quaternion andR
the quaternion representing the specified rotation, then the new quaternion will beQ * R
. So when transforming a vectorv
with 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 axis- Returns:
- this
-
rotateX
Description copied from interface:Quaterniondc
Apply a rotation tothis
quaternion rotating the given radians about the x axis and store the result indest
.If
Q
isthis
quaternion andR
the quaternion representing the specified rotation, then the new quaternion will beQ * R
. So when transforming a vectorv
with the new quaternion by usingQ * R * v
, the rotation added by this method will be applied first!- Specified by:
rotateX
in interfaceQuaterniondc
- Parameters:
angle
- the angle in radians to rotate about the x axisdest
- will hold the result- Returns:
- dest
-
rotateY
Apply a rotation tothis
quaternion rotating the given radians about the y axis.If
Q
isthis
quaternion andR
the quaternion representing the specified rotation, then the new quaternion will beQ * R
. So when transforming a vectorv
with 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 axis- Returns:
- this
-
rotateY
Description copied from interface:Quaterniondc
Apply a rotation tothis
quaternion rotating the given radians about the y axis and store the result indest
.If
Q
isthis
quaternion andR
the quaternion representing the specified rotation, then the new quaternion will beQ * R
. So when transforming a vectorv
with the new quaternion by usingQ * R * v
, the rotation added by this method will be applied first!- Specified by:
rotateY
in interfaceQuaterniondc
- Parameters:
angle
- the angle in radians to rotate about the y axisdest
- will hold the result- Returns:
- dest
-
rotateZ
Apply a rotation tothis
quaternion rotating the given radians about the z axis.If
Q
isthis
quaternion andR
the quaternion representing the specified rotation, then the new quaternion will beQ * R
. So when transforming a vectorv
with 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 axis- Returns:
- this
-
rotateZ
Description copied from interface:Quaterniondc
Apply a rotation tothis
quaternion rotating the given radians about the z axis and store the result indest
.If
Q
isthis
quaternion andR
the quaternion representing the specified rotation, then the new quaternion will beQ * R
. So when transforming a vectorv
with the new quaternion by usingQ * R * v
, the rotation added by this method will be applied first!- Specified by:
rotateZ
in interfaceQuaterniondc
- Parameters:
angle
- the angle in radians to rotate about the z axisdest
- will hold the result- Returns:
- dest
-
rotateLocalX
Apply a rotation tothis
quaternion rotating the given radians about the local x axis.If
Q
isthis
quaternion andR
the quaternion representing the specified rotation, then the new quaternion will beR * Q
. So when transforming a vectorv
with the new quaternion by usingR * Q * v
, the rotation represented bythis
will be applied first!- Parameters:
angle
- the angle in radians to rotate about the local x axis- Returns:
- this
-
rotateLocalX
Description copied from interface:Quaterniondc
Apply a rotation tothis
quaternion rotating the given radians about the local x axis and store the result indest
.If
Q
isthis
quaternion andR
the quaternion representing the specified rotation, then the new quaternion will beR * Q
. So when transforming a vectorv
with the new quaternion by usingR * Q * v
, the rotation represented bythis
will be applied first!- Specified by:
rotateLocalX
in interfaceQuaterniondc
- Parameters:
angle
- the angle in radians to rotate about the local x axisdest
- will hold the result- Returns:
- dest
-
rotateLocalY
Apply a rotation tothis
quaternion rotating the given radians about the local y axis.If
Q
isthis
quaternion andR
the quaternion representing the specified rotation, then the new quaternion will beR * Q
. So when transforming a vectorv
with the new quaternion by usingR * Q * v
, the rotation represented bythis
will be applied first!- Parameters:
angle
- the angle in radians to rotate about the local y axis- Returns:
- this
-
rotateLocalY
Description copied from interface:Quaterniondc
Apply a rotation tothis
quaternion rotating the given radians about the local y axis and store the result indest
.If
Q
isthis
quaternion andR
the quaternion representing the specified rotation, then the new quaternion will beR * Q
. So when transforming a vectorv
with the new quaternion by usingR * Q * v
, the rotation represented bythis
will be applied first!- Specified by:
rotateLocalY
in interfaceQuaterniondc
- Parameters:
angle
- the angle in radians to rotate about the local y axisdest
- will hold the result- Returns:
- dest
-
rotateLocalZ
Apply a rotation tothis
quaternion rotating the given radians about the local z axis.If
Q
isthis
quaternion andR
the quaternion representing the specified rotation, then the new quaternion will beR * Q
. So when transforming a vectorv
with the new quaternion by usingR * Q * v
, the rotation represented bythis
will be applied first!- Parameters:
angle
- the angle in radians to rotate about the local z axis- Returns:
- this
-
rotateLocalZ
Description copied from interface:Quaterniondc
Apply a rotation tothis
quaternion rotating the given radians about the local z axis and store the result indest
.If
Q
isthis
quaternion andR
the quaternion representing the specified rotation, then the new quaternion will beR * Q
. So when transforming a vectorv
with the new quaternion by usingR * Q * v
, the rotation represented bythis
will be applied first!- Specified by:
rotateLocalZ
in interfaceQuaterniondc
- Parameters:
angle
- the angle in radians to rotate about the local z axisdest
- will hold the result- Returns:
- dest
-
rotateXYZ
Apply a rotation tothis
quaternion rotating the given radians about the cartesian base unit axes, called the euler angles using rotation sequenceXYZ
.This method is equivalent to calling:
rotateX(angleX).rotateY(angleY).rotateZ(angleZ)
If
Q
isthis
quaternion andR
the quaternion representing the specified rotation, then the new quaternion will beQ * R
. So when transforming a vectorv
with 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 axis- Returns:
- this
-
rotateXYZ
Description copied from interface:Quaterniondc
Apply a rotation tothis
quaternion rotating the given radians about the cartesian base unit axes, called the euler angles using rotation sequenceXYZ
and store the result indest
.This method is equivalent to calling:
rotateX(angleX, dest).rotateY(angleY).rotateZ(angleZ)
If
Q
isthis
quaternion andR
the quaternion representing the specified rotation, then the new quaternion will beQ * R
. So when transforming a vectorv
with the new quaternion by usingQ * R * v
, the rotation added by this method will be applied first!- Specified by:
rotateXYZ
in interfaceQuaterniondc
- 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
Apply a rotation tothis
quaternion rotating the given radians about the cartesian base unit axes, called the euler angles, using the rotation sequenceZYX
.This method is equivalent to calling:
rotateZ(angleZ).rotateY(angleY).rotateX(angleX)
If
Q
isthis
quaternion andR
the quaternion representing the specified rotation, then the new quaternion will beQ * R
. So when transforming a vectorv
with 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 axis- Returns:
- this
-
rotateZYX
Description copied from interface:Quaterniondc
Apply a rotation tothis
quaternion rotating the given radians about the cartesian base unit axes, called the euler angles, using the rotation sequenceZYX
and store the result indest
.This method is equivalent to calling:
rotateZ(angleZ, dest).rotateY(angleY).rotateX(angleX)
If
Q
isthis
quaternion andR
the quaternion representing the specified rotation, then the new quaternion will beQ * R
. So when transforming a vectorv
with the new quaternion by usingQ * R * v
, the rotation added by this method will be applied first!- Specified by:
rotateZYX
in interfaceQuaterniondc
- 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
Apply a rotation tothis
quaternion rotating the given radians about the cartesian base unit axes, called the euler angles, using the rotation sequenceYXZ
.This method is equivalent to calling:
rotateY(angleY).rotateX(angleX).rotateZ(angleZ)
If
Q
isthis
quaternion andR
the quaternion representing the specified rotation, then the new quaternion will beQ * R
. So when transforming a vectorv
with 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 axis- Returns:
- this
-
rotateYXZ
Description copied from interface:Quaterniondc
Apply a rotation tothis
quaternion rotating the given radians about the cartesian base unit axes, called the euler angles, using the rotation sequenceYXZ
and store the result indest
.This method is equivalent to calling:
rotateY(angleY, dest).rotateX(angleX).rotateZ(angleZ)
If
Q
isthis
quaternion andR
the quaternion representing the specified rotation, then the new quaternion will beQ * R
. So when transforming a vectorv
with the new quaternion by usingQ * R * v
, the rotation added by this method will be applied first!- Specified by:
rotateYXZ
in interfaceQuaterniondc
- 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
Description copied from interface:Quaterniondc
Get the euler angles in radians in rotation sequenceXYZ
of this quaternion and store them in the provided parametereulerAngles
.The Euler angles are always returned as the angle around X in the
Vector3d.x
field, the angle around Y in theVector3d.y
field and the angle around Z in theVector3d.z
field of the suppliedVector3d
instance.- Specified by:
getEulerAnglesXYZ
in interfaceQuaterniondc
- Parameters:
eulerAngles
- will hold the euler angles in radians- Returns:
- the passed in vector
-
getEulerAnglesZYX
Description copied from interface:Quaterniondc
Get the euler angles in radians in rotation sequenceZYX
of this quaternion and store them in the provided parametereulerAngles
.The Euler angles are always returned as the angle around X in the
Vector3d.x
field, the angle around Y in theVector3d.y
field and the angle around Z in theVector3d.z
field of the suppliedVector3d
instance.- Specified by:
getEulerAnglesZYX
in interfaceQuaterniondc
- Parameters:
eulerAngles
- will hold the euler angles in radians- Returns:
- the passed in vector
-
getEulerAnglesZXY
Description copied from interface:Quaterniondc
Get the euler angles in radians in rotation sequenceZXY
of this quaternion and store them in the provided parametereulerAngles
.The Euler angles are always returned as the angle around X in the
Vector3d.x
field, the angle around Y in theVector3d.y
field and the angle around Z in theVector3d.z
field of the suppliedVector3d
instance.- Specified by:
getEulerAnglesZXY
in interfaceQuaterniondc
- Parameters:
eulerAngles
- will hold the euler angles in radians- Returns:
- the passed in vector
-
getEulerAnglesYXZ
Description copied from interface:Quaterniondc
Get the euler angles in radians in rotation sequenceYXZ
of this quaternion and store them in the provided parametereulerAngles
.The Euler angles are always returned as the angle around X in the
Vector3d.x
field, the angle around Y in theVector3d.y
field and the angle around Z in theVector3d.z
field of the suppliedVector3d
instance.- Specified by:
getEulerAnglesYXZ
in interfaceQuaterniondc
- Parameters:
eulerAngles
- will hold the euler angles in radians- Returns:
- the passed in vector
-
rotateAxis
public Quaterniond rotateAxis(double angle, double axisX, double axisY, double axisZ, Quaterniond dest) Description copied from interface:Quaterniondc
Apply a rotation tothis
quaternion rotating the given radians about the specified axis and store the result indest
.If
Q
isthis
quaternion andR
the quaternion representing the specified rotation, then the new quaternion will beQ * R
. So when transforming a vectorv
with the new quaternion by usingQ * R * v
, the rotation added by this method will be applied first!- Specified by:
rotateAxis
in interfaceQuaterniondc
- 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
Description copied from interface:Quaterniondc
Apply a rotation tothis
quaternion rotating the given radians about the specified axis and store the result indest
.If
Q
isthis
quaternion andR
the quaternion representing the specified rotation, then the new quaternion will beQ * R
. So when transforming a vectorv
with the new quaternion by usingQ * R * v
, the rotation added by this method will be applied first!- Specified by:
rotateAxis
in interfaceQuaterniondc
- Parameters:
angle
- the angle in radians to rotate about the specified axisaxis
- the rotation axisdest
- will hold the result- Returns:
- dest
- See Also:
-
rotateAxis
Apply a rotation tothis
quaternion rotating the given radians about the specified axis.If
Q
isthis
quaternion andR
the quaternion representing the specified rotation, then the new quaternion will beQ * R
. So when transforming a vectorv
with 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 axis- Returns:
- this
- See Also:
-
rotateAxis
Apply a rotation tothis
quaternion rotating the given radians about the specified axis.If
Q
isthis
quaternion andR
the quaternion representing the specified rotation, then the new quaternion will beQ * R
. So when transforming a vectorv
with 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 axis- Returns:
- this
- See Also:
-
positiveX
Description copied from interface:Quaterniondc
Obtain the direction of+X
before the rotation transformation represented bythis
quaternion is applied.This method is equivalent to the following code:
Quaterniond inv = new Quaterniond(this).invert(); inv.transform(dir.set(1, 0, 0));
- Specified by:
positiveX
in interfaceQuaterniondc
- Parameters:
dir
- will hold the direction of+X
- Returns:
- dir
-
normalizedPositiveX
Description copied from interface:Quaterniondc
Obtain the direction of+X
before the rotation transformation represented bythis
normalized quaternion is applied. The quaternion must benormalized
for this method to work.This method is equivalent to the following code:
Quaterniond inv = new Quaterniond(this).conjugate(); inv.transform(dir.set(1, 0, 0));
- Specified by:
normalizedPositiveX
in interfaceQuaterniondc
- Parameters:
dir
- will hold the direction of+X
- Returns:
- dir
-
positiveY
Description copied from interface:Quaterniondc
Obtain the direction of+Y
before the rotation transformation represented bythis
quaternion is applied.This method is equivalent to the following code:
Quaterniond inv = new Quaterniond(this).invert(); inv.transform(dir.set(0, 1, 0));
- Specified by:
positiveY
in interfaceQuaterniondc
- Parameters:
dir
- will hold the direction of+Y
- Returns:
- dir
-
normalizedPositiveY
Description copied from interface:Quaterniondc
Obtain the direction of+Y
before the rotation transformation represented bythis
normalized quaternion is applied. The quaternion must benormalized
for this method to work.This method is equivalent to the following code:
Quaterniond inv = new Quaterniond(this).conjugate(); inv.transform(dir.set(0, 1, 0));
- Specified by:
normalizedPositiveY
in interfaceQuaterniondc
- Parameters:
dir
- will hold the direction of+Y
- Returns:
- dir
-
positiveZ
Description copied from interface:Quaterniondc
Obtain the direction of+Z
before the rotation transformation represented bythis
quaternion is applied.This method is equivalent to the following code:
Quaterniond inv = new Quaterniond(this).invert(); inv.transform(dir.set(0, 0, 1));
- Specified by:
positiveZ
in interfaceQuaterniondc
- Parameters:
dir
- will hold the direction of+Z
- Returns:
- dir
-
normalizedPositiveZ
Description copied from interface:Quaterniondc
Obtain the direction of+Z
before the rotation transformation represented bythis
normalized quaternion is applied. The quaternion must benormalized
for this method to work.This method is equivalent to the following code:
Quaterniond inv = new Quaterniond(this).conjugate(); inv.transform(dir.set(0, 0, 1));
- Specified by:
normalizedPositiveZ
in interfaceQuaterniondc
- Parameters:
dir
- will hold the direction of+Z
- Returns:
- dir
-
conjugateBy
Conjugatethis
by the given quaternionq
by computingq * this * q^-1
.- Parameters:
q
- theQuaterniondc
to conjugatethis
by- Returns:
- this
-
conjugateBy
Conjugatethis
by the given quaternionq
by computingq * this * q^-1
and store the result intodest
.- Specified by:
conjugateBy
in interfaceQuaterniondc
- Parameters:
q
- theQuaterniondc
to conjugatethis
bydest
- will hold the result- Returns:
- dest
-
isFinite
public boolean isFinite()Description copied from interface:Quaterniondc
Determine whether all components are finite floating-point values, that is, they are notNaN
and notinfinity
.- Specified by:
isFinite
in interfaceQuaterniondc
- Returns:
true
if all components are finite floating-point values;false
otherwise
-
equals
Description copied from interface:Quaterniondc
Compare the quaternion components ofthis
quaternion with the given quaternion using the givendelta
and 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
ArrayList
HashSet
orHashMap
and their operations, such asArrayList.contains(Object)
orHashSet.remove(Object)
, since those data structures only use theObject.equals(Object)
andObject.hashCode()
methods.- Specified by:
equals
in interfaceQuaterniondc
- Parameters:
q
- the other quaterniondelta
- the allowed maximum difference- Returns:
true
whether all of the quaternion components are equal;false
otherwise
-
equals
public boolean equals(double x, double y, double z, double w) - Specified by:
equals
in interfaceQuaterniondc
- 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:
true
if all the quaternion components are equal
-
clone
- Overrides:
clone
in classObject
- Throws:
CloneNotSupportedException
-