Operations on Poses

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.)
 

Detailed Description

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) \).

© Copyright 2007-2013 Renaud Detry.
Distributed under the terms of the GNU General Public License (GPL).
(See accompanying file LICENSE.txt or copy at http://www.gnu.org/copyleft/gpl.html.)
Revised Sun Sep 13 2020 19:10:07.