public interface Tuple4DBasics extends Tuple4DReadOnly, Clearable, Transformable
A tuple 4D represents what is commonly called a quaternion. Although from definition, a
quaternion does not necessarily represent an 3D orientation, in this library the classes
implementing QuaternionReadOnly
and QuaternionBasics
represent unit-quaternions
meant to represent 3D orientations. The classes implementing Vector4DReadOnly
and
Vector4DBasics
are used to represent generic quaternions.
The write interface for a 4D tuple is more restricted than for the 2D and 3D tuples to improve data safety for the classes representing unit-quaternions.
When describing a 4D tuple, its 4 components are often gathered in two groups: the scalar part
s
and the vector part (x
, y
, z
).
Note on the difference between applying a 3D transform on a quaternion and a 4D vector:
s
remains unchanged. The vector part (x
, y
, z
) is scaled and rotated, and
translated by s
times the translation part of the transform. Note that for s = 0
,
a 4D vector behaves as a 3D vector, and for s = 1
it behaves as a 3D point.
Modifier and Type | Method and Description |
---|---|
default void |
absolute()
Sets each component of this tuple to its absolute value.
|
default boolean |
containsNaN()
Tests if this tuple contains a
Double.NaN . |
default void |
negate()
Changes the sign of each component of this tuple.
|
void |
normalize()
Normalizes this tuple such that its norm is equal to 1 after calling this method and its
direction remains unchanged.
|
default void |
set(org.ejml.data.DenseMatrix64F matrix)
Sets this tuple's components
x , y , z , s in order from the
given column vector starting to read from its first row index. |
default void |
set(double[] tupleArray)
Sets this tuple's components
x , y , z , s in order from the
given array tupleArray . |
void |
set(double x,
double y,
double z,
double s)
Sets this tuple's components to
x , y , z , and s . |
default void |
set(float[] tupleArray)
Sets this tuple's components
x , y , z , s in order from the
given array tupleArray . |
default void |
set(int startRow,
org.ejml.data.DenseMatrix64F matrix)
Sets this tuple's components
x , y , z , s in order from the
given column vector starting to read from startRow . |
default void |
set(int startIndex,
double[] tupleArray)
Sets this tuple's components
x , y , z , s in order from the
given array tupleArray . |
default void |
set(int startIndex,
float[] tupleArray)
Sets this tuple's components
x , y , z , s in order from the
given array tupleArray . |
default void |
set(int startRow,
int column,
org.ejml.data.DenseMatrix64F matrix)
Sets this tuple's components
x , y , z , s in order from the
given matrix starting to read from startRow at the column index column . |
default void |
set(Tuple4DReadOnly other)
Sets this tuple to
tupleReadOnly . |
default void |
setAndAbsolute(Tuple4DReadOnly other)
Sets this tuple to
other and then calls absolute() . |
default void |
setAndNegate(Tuple4DReadOnly other)
Sets this tuple to
other and then calls negate() . |
default void |
setAndNormalize(Tuple4DReadOnly other)
Sets this tuple to
other and then calls normalize() . |
default void |
setToNaN()
Invalidate this object by setting its values to
Double.NaN . |
dot, epsilonEquals, equals, get, get, get, get, get, get, get, getElement, getElement32, getS, getS32, getX, getX32, getY, getY32, getZ, getZ32, norm, normSquared
applyInverseTransform, applyTransform
void set(double x, double y, double z, double s)
x
, y
, z
, and s
.x
- the new value for the x-component of this tuple.y
- the new value for the y-component of this tuple.z
- the new value for the z-component of this tuple.s
- the new value for the s-component of this tuple.void normalize()
Edge cases:
Double.NaN
, this method is ineffective.
default void setToNaN()
Clearable
Double.NaN
.default boolean containsNaN()
Double.NaN
.containsNaN
in interface Clearable
containsNaN
in interface Tuple4DReadOnly
true
if this tuple contains a Double.NaN
, false
otherwise.default void absolute()
default void negate()
default void set(Tuple4DReadOnly other)
tupleReadOnly
.other
- the other tuple to copy the values from. Not modified.default void set(double[] tupleArray)
x
, y
, z
, s
in order from the
given array tupleArray
.tupleArray
- the array containing the new values for this tuple's components. Not
modified.default void set(int startIndex, double[] tupleArray)
x
, y
, z
, s
in order from the
given array tupleArray
.startIndex
- the first index to start reading from in the array.tupleArray
- the array containing the new values for this tuple's components. Not
modified.default void set(float[] tupleArray)
x
, y
, z
, s
in order from the
given array tupleArray
.tupleArray
- the array containing the new values for this tuple's components. Not
modified.default void set(int startIndex, float[] tupleArray)
x
, y
, z
, s
in order from the
given array tupleArray
.startIndex
- the first index to start reading from in the array.tupleArray
- the array containing the new values for this tuple's components. Not
modified.default void set(org.ejml.data.DenseMatrix64F matrix)
x
, y
, z
, s
in order from the
given column vector starting to read from its first row index.matrix
- the column vector containing the new values for this tuple's components. Not
modified.default void set(int startRow, org.ejml.data.DenseMatrix64F matrix)
x
, y
, z
, s
in order from the
given column vector starting to read from startRow
.startRow
- the first row index to start reading in the dense-matrix.matrix
- the column vector containing the new values for this tuple's components. Not
modified.default void set(int startRow, int column, org.ejml.data.DenseMatrix64F matrix)
x
, y
, z
, s
in order from the
given matrix starting to read from startRow
at the column index column
.startRow
- the first row index to start reading in the dense-matrix.column
- the column index to read in the dense-matrix.matrix
- the column vector containing the new values for this tuple's components. Not
modified.default void setAndAbsolute(Tuple4DReadOnly other)
other
and then calls absolute()
.other
- the other tuple to copy the values from. Not modified.default void setAndNegate(Tuple4DReadOnly other)
other
and then calls negate()
.other
- the other tuple to copy the values from. Not modified.default void setAndNormalize(Tuple4DReadOnly other)
other
and then calls normalize()
.other
- the other tuple to copy the values from. Not modified.