This page introduces vocabulary for referring to operations on \( SE(3) \) poses. More...
Functions | |
Vector3 | nuklei::la::transform (const Vector3 &x, const Matrix3 &X, const Vector3 &y) |
Returns \( Xy + x \). | |
Vector3 | nuklei::la::transform (const Vector3 &x, const Quaternion &X, const Vector3 &y) |
Returns \( Xy + x \). | |
void | nuklei::la::transform (Vector3 &z, Matrix3 &Z, const Vector3 &x, const Matrix3 &X, const Vector3 &y, const Matrix3 &Y) |
\( z = X y + x, Z = X Y \). | |
void | nuklei::la::transform (Vector3 &z, Quaternion &Z, const Vector3 &x, const Quaternion &X, const Vector3 &y, const Quaternion &Y) |
\( z = X y + x, Z = X Y \). | |
void | nuklei::la::transform (Vector3 &z, Vector3 &Z, const Vector3 &x, const Matrix3 &X, const Vector3 &y, const Vector3 &Y) |
\( z = X y + x, Z = X Y \). | |
void | nuklei::la::transform (Vector3 &z, Vector3 &Z, const Vector3 &x, const Quaternion &X, const Vector3 &y, const Vector3 &Y) |
\( z = X y + x, Z = X Y \). | |
Vector3 | nuklei::la::project (const Vector3 &x, const Matrix3 &X, const Vector3 &z) |
Returns \( X^T (z-x) \). | |
Vector3 | nuklei::la::project (const Vector3 &x, const Quaternion &X, const Vector3 &z) |
Returns \( X^T (z-x) \). | |
void | nuklei::la::project (Vector3 &y, Matrix3 &Y, const Vector3 &x, const Matrix3 &X, const Vector3 &z, const Matrix3 &Z) |
\( y = X^T (z-x), Y = X^T Z \). | |
void | nuklei::la::project (Vector3 &y, Quaternion &Y, const Vector3 &x, const Quaternion &X, const Vector3 &z, const Quaternion &Z) |
\( y = X^T (z-x), Y = X^T Z \). | |
void | nuklei::la::project (Vector3 &y, Vector3 &Y, const Vector3 &x, const Matrix3 &X, const Vector3 &z, const Vector3 &Z) |
\( y = X^T (z-x), Y = X^T Z \). | |
void | nuklei::la::project (Vector3 &y, Vector3 &Y, const Vector3 &x, const Quaternion &X, const Vector3 &z, const Vector3 &Z) |
\( y = X^T (z-x), Y = X^T Z \). | |
void | nuklei::la::transfoTo (Vector3 &x, Matrix3 &X, const Vector3 &y, const Matrix3 &Y, const Vector3 &z, const Matrix3 &Z) |
\( x = z - Z Y^T y, X = Z Y^T \) | |
void | nuklei::la::transfoTo (Vector3 &x, Quaternion &X, const Vector3 &y, const Quaternion &Y, const Vector3 &z, const Quaternion &Z) |
\( x = z - Z Y^T y, X = Z Y^T \) | |
virtual base::ptr | nuklei::kernel::base::polyTransformedWith (const kernel::se3 &k) const =0 |
Transforms *this with k and returns the result. (See Operations on Poses.) | |
virtual void | nuklei::kernel::base::polyMakeTransformWith (const kernel::se3 &k)=0 |
Transforms *this with k and sets *this to the result. (See Operations on Poses.) | |
virtual base::ptr | nuklei::kernel::base::polyProjectedOn (const kernel::se3 &k) const =0 |
Projects *this onto k and returns the result. (See Operations on Poses.) | |
This page introduces vocabulary for referring to operations on \( SE(3) \) poses.
(Note: poses are also called transformations)
Let us consider three \( SE(3) \) rigid transformations, denoted by \( (x,X) \), \( (y,Y) \), and \( (z,Z) \), where lowercase variables denote translations, and uppercase letters denote rotations. Variables \( x \), \( y \), and \( z \) are thus three-vectors, while \( X \), \( Y \), and \( Z \) are 3D rotations encoded as rotation matrices.
Note: Do not assume that lowercase variables always denote three-vectors. Throughout the doc, lowercase variables are also used to denote an \( SE(3) \) transformation (composed of a translation and a rotation).
Let us consider that the three transformations \( (x,X) \), \( (y,Y) \), and \( (z,Z) \) are related by
\[ z = Xy+x \qquad Z=XY. \]
Each transformation can be expressed from the other two as
\begin{align*} z &= Xy+x & Z&=XY &\textrm{(1)}\\ y &= X^T(z-x) & Y&=X^TZ &\textrm{(2)}\\ x &= z - ZY^Ty & X &= ZY^T &\textrm{(3)} \end{align*}
Each of the three rearrangements above define a way of combining two \( SE(3) \) elements into a third \( SE(3) \) element.
In the first operation
\[ z = Xy+x \qquad Z=XY \]
we say that \( (y,Y) \) is transformed by \( (x,X) \) to produce \( (z,Z) \).
In
\[ y = X^T(z-x) \qquad Y=X^TZ \]
\( (z,Z) \) is projected onto \( (x,X) \) to produce \( (y,Y) \) ( \( (y,Y) \) is the projection of \( (z,Z) \) in the coordinate system defined by \( (x,X) \)).
The last operation
\[ x = z - ZY^Ty \qquad X = ZY^T \]
computes \( (x,X) \) which is the transformation that applies \( (y,Y) \) onto \( (z,Z) \).