Package org.robwork.sdurw
Class Rotation3Df
- java.lang.Object
-
- org.robwork.sdurw.Rotation3Df
-
public class Rotation3Df extends java.lang.ObjectA 3x3 rotation matrix \mathbf{R}\in SO(3)
\mathbf{R}= \left[ \begin{array}{ccc} {}^A\hat{X}_B {}^A\hat{Y}_B {}^A\hat{Z}_B \end{array} \right] = \left[ \begin{array}{ccc} r_{11} r_{12} r_{13} \\ r_{21} r_{22} r_{23} \\ r_{31} r_{32} r_{33} \end{array} \right]
-
-
Constructor Summary
Constructors Constructor Description Rotation3Df()A rotation matrix with uninitialized storage.Rotation3Df(float v0, float v1, float v2, float v3, float v4, float v5, float v6, float v7, float v8)Constructs an initialized 3x3 rotation matrix
\mathbf{R} = \left[ \begin{array}{ccc} r_{11} r_{12} r_{13} \\ r_{21} r_{22} r_{23} \\ r_{31} r_{32} r_{33} \end{array} \right]Rotation3Df(long cPtr, boolean cMemoryOwn)Rotation3Df(Rotation3Df R)Rotation3Df(Vector3Df i, Vector3Df j, Vector3Df k)Constructs an initialized 3x3 rotation matrix
\robabx{a}{b}{\mathbf{R}} = \left[ \begin{array}{ccc} \robabx{a}{b}{\mathbf{i}} \robabx{a}{b}{\mathbf{j}} \robabx{a}{b}{\mathbf{k}} \end{array} \right]
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voiddelete()EigenMatrix3fe()Returns a Eigen 3x3 matrix \mathbf{M}\in SO(3) that represents this rotation
booleanequal(Rotation3Df rot, float precision)Compares rotations with a given precision
Performs an element wise comparison.booleanequals(Rotation3Df rhs)Comparison operator.
The comparison operator makes a element wise comparison.
Returns true only if all elements are equal.
floatget(long row, long column)Vector3DfgetCol(long i)Returns the i'th column of the rotation matrixstatic longgetCPtr(Rotation3Df obj)Vector3DfgetRow(long i)Returns the i'th row of the rotation matrix
static Rotation3Dfidentity()Constructs a 3x3 rotation matrix set to identityRotation3Dfinverse()Calculate the inverse.
Note: This function changes the object that it is invoked on, but this is about x5 faster
than rot = inverse( rot )
Note: see inverse(const rw::math::Rotation3D< T > &) for the (slower) version that does not change the
rotation object itself.booleanisProperRotation()Verify that this rotation is a proper rotation
booleanisProperRotation(float precision)Verify that this rotation is a proper rotation
EAAfmultiply(EAAf bTKc)InertiaMatrixfmultiply(InertiaMatrixf bRc)static Rotation3Dfmultiply(Rotation3Df aRb, Rotation3Df bRc)Calculates \robabx{a}{c}{\mathbf{R}} = \robabx{a}{b}{\mathbf{R}} \robabx{b}{c}{\mathbf{R}}
static voidmultiply(Rotation3Df a, Rotation3Df b, Rotation3Df result)Write to result the product a * b.static Vector3Dfmultiply(Rotation3Df aRb, Vector3Df bVc)Calculates \robabx{a}{c}{\mathbf{v}} = \robabx{a}{b}{\mathbf{R}} \robabx{b}{c}{\mathbf{v}}
static voidmultiply(Rotation3Df a, Vector3Df b, Vector3Df result)Write to result the product a * b.voidnormalize()Normalizes the rotation matrix to satisfy SO(3).
Makes a normalization of the rotation matrix such that the columns
are normalized and othogonal s.t.voidset(long row, long column, float d)static Rotation3Dfskew(Vector3Df v)Creates a skew symmetric matrix from a Vector3D.java.lang.StringtoString()
-
-
-
Constructor Detail
-
Rotation3Df
public Rotation3Df(long cPtr, boolean cMemoryOwn)
-
Rotation3Df
public Rotation3Df()
A rotation matrix with uninitialized storage.
-
Rotation3Df
public Rotation3Df(float v0, float v1, float v2, float v3, float v4, float v5, float v6, float v7, float v8)Constructs an initialized 3x3 rotation matrix
\mathbf{R} = \left[ \begin{array}{ccc} r_{11} r_{12} r_{13} \\ r_{21} r_{22} r_{23} \\ r_{31} r_{32} r_{33} \end{array} \right]
-
Rotation3Df
public Rotation3Df(Vector3Df i, Vector3Df j, Vector3Df k)
Constructs an initialized 3x3 rotation matrix
\robabx{a}{b}{\mathbf{R}} = \left[ \begin{array}{ccc} \robabx{a}{b}{\mathbf{i}} \robabx{a}{b}{\mathbf{j}} \robabx{a}{b}{\mathbf{k}} \end{array} \right]
- Parameters:
i- \robabx{a}{b}{\mathbf{i}}j- \robabx{a}{b}{\mathbf{j}}k- \robabx{a}{b}{\mathbf{k}}
-
Rotation3Df
public Rotation3Df(Rotation3Df R)
-
-
Method Detail
-
getCPtr
public static long getCPtr(Rotation3Df obj)
-
delete
public void delete()
-
identity
public static Rotation3Df identity()
Constructs a 3x3 rotation matrix set to identity- Returns:
- a 3x3 identity rotation matrix
\mathbf{R} = \left[ \begin{array}{ccc} 1 0 0 \\ 0 1 0 \\ 0 0 1 \end{array} \right]
-
normalize
public void normalize()
Normalizes the rotation matrix to satisfy SO(3).
Makes a normalization of the rotation matrix such that the columns
are normalized and othogonal s.t. it belongs to SO(3).
-
getRow
public Vector3Df getRow(long i)
Returns the i'th row of the rotation matrix
- Parameters:
i- [in] Index of the row to return. Only valid indices are 0, 1 and 2.
-
getCol
public Vector3Df getCol(long i)
Returns the i'th column of the rotation matrix- Parameters:
i- [in] Index of the column to return. Only valid indices are 0, 1 and 2.
-
equals
public boolean equals(Rotation3Df rhs)
Comparison operator.
The comparison operator makes a element wise comparison.
Returns true only if all elements are equal.
- Parameters:
rhs- [in] Rotation to compare with- Returns:
- True if equal.
-
equal
public boolean equal(Rotation3Df rot, float precision)
Compares rotations with a given precision
Performs an element wise comparison. Two elements are considered equal if the difference
are less than precision.
- Parameters:
rot- [in] Rotation to compare withprecision- [in] The precision to use for testing
- Returns:
- True if all elements are less than precision apart.
-
isProperRotation
public boolean isProperRotation()
Verify that this rotation is a proper rotation
- Returns:
- True if this rotation is considered a proper rotation
-
isProperRotation
public boolean isProperRotation(float precision)
Verify that this rotation is a proper rotation
- Returns:
- True if this rotation is considered a proper rotation
-
e
public EigenMatrix3f e()
Returns a Eigen 3x3 matrix \mathbf{M}\in SO(3) that represents this rotation
- Returns:
- \mathbf{M}\in SO(3)
-
skew
public static Rotation3Df skew(Vector3Df v)
Creates a skew symmetric matrix from a Vector3D. Also
known as the cross product matrix of v.
- Parameters:
v- [in] vector to create Skew matrix from
-
multiply
public static void multiply(Rotation3Df a, Rotation3Df b, Rotation3Df result)
Write to result the product a * b.
-
multiply
public static void multiply(Rotation3Df a, Vector3Df b, Vector3Df result)
Write to result the product a * b.
-
multiply
public static Rotation3Df multiply(Rotation3Df aRb, Rotation3Df bRc)
Calculates \robabx{a}{c}{\mathbf{R}} = \robabx{a}{b}{\mathbf{R}} \robabx{b}{c}{\mathbf{R}}
- Parameters:
aRb- [in] \robabx{a}{b}{\mathbf{R}}
bRc- [in] \robabx{b}{c}{\mathbf{R}}
- Returns:
- \robabx{a}{c}{\mathbf{R}}
-
multiply
public static Vector3Df multiply(Rotation3Df aRb, Vector3Df bVc)
Calculates \robabx{a}{c}{\mathbf{v}} = \robabx{a}{b}{\mathbf{R}} \robabx{b}{c}{\mathbf{v}}
- Parameters:
aRb- [in] \robabx{a}{b}{\mathbf{R}}bVc- [in] \robabx{b}{c}{\mathbf{v}}- Returns:
- \robabx{a}{c}{\mathbf{v}}
-
inverse
public Rotation3Df inverse()
Calculate the inverse.
Note: This function changes the object that it is invoked on, but this is about x5 faster
than rot = inverse( rot )
Note: see inverse(const rw::math::Rotation3D< T > &) for the (slower) version that does not change the
rotation object itself.- Returns:
- the inverse rotation.
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
get
public float get(long row, long column)
-
set
public void set(long row, long column, float d)
-
multiply
public InertiaMatrixf multiply(InertiaMatrixf bRc)
-
-