Helios++
Helios software for LiDAR simulations
rigidmotion::RigidMotionR2Factory Class Reference

Class providing building methods for rigid motions in \(\mathbb{R}^{2}\). More...

#include <RigidMotionR2Factory.h>

Inheritance diagram for rigidmotion::RigidMotionR2Factory:
Collaboration diagram for rigidmotion::RigidMotionR2Factory:

Public Member Functions

 RigidMotionR2Factory ()=default
 RigidMotionR2Factory default constructor.
 
RigidMotion makeIdentity () const override
 Implementation of identity rigid motion in \(\mathbb{R}^{2}\). More...
 
RigidMotion makeTranslation (colvec const shift) const override
 Implementation of translation rigid motion in \(\mathbb{R}^{2}\). More...
 
virtual RigidMotion makeReflection (colvec const axis) const
 Implementation of reflection rigid motion in \(\mathbb{R}^{2}\). More...
 
virtual RigidMotion makeReflection (double const theta) const
 As makeReflection method but receiving \(\theta\) as the angle between reflection axis and \(e_1\) instead of the reflection axis itself. More...
 
virtual RigidMotion makeGlideReflection (colvec const axis, double const glide) const
 Implementation of glide reflection rigid motion in \(\mathbb{R}^{2}\). More...
 
virtual RigidMotion makeGlideReflection (double const theta, double const glide) const
 As makeGlideReflection method but receiving \(\theta\) as the angle between reflection axis and \(e_1\) instead of the reflection axis itself. More...
 
virtual RigidMotion makeRotation (double const theta, colvec const center) const
 Implementation of rotation rigid motion in \(\mathbb{R}^{2}\). More...
 
- Public Member Functions inherited from rigidmotion::RigidMotionFactory
 RigidMotionFactory ()=default
 RigidMotionFactory default constructor.
 
virtual RigidMotion makeTranslation (arma::colvec const shift) const =0
 Build the translation rigid motion. More...
 

Private Member Functions

template<typename Archive >
void serialize (Archive &ar, const unsigned int version)
 Serialize a \(\mathbb{R}^{2}\) rigid motion factory to a stream of bytes. More...
 

Friends

class boost::serialization::access
 

Detailed Description

Class providing building methods for rigid motions in \(\mathbb{R}^{2}\).

Author
Alberto M. Esmoris Pena
Version
1.0
See also
rigidmotion::RigidMotionFactory

Member Function Documentation

◆ makeGlideReflection() [1/2]

RigidMotion RigidMotionR2Factory::makeGlideReflection ( colvec const  axis,
double const  glide 
) const
virtual

Implementation of glide reflection rigid motion in \(\mathbb{R}^{2}\).

Let \(\vec{u}\) be an arbitrary axis, let \(\theta\) be the angle between \(\vec{u}\) and \(e_1\) and let \(\lambda\) specify how many glide in the \(\hat{u}\) axis direction will be applied after the reflection. Notice \(\hat{u} = \frac{\vec{u}}{\Vert\vec{u}\Vert}\), it is \(\vec{u}\) as normalized director vector. Thus, the affine application for the glide reflection would be \(Y = \lambda\hat{u} + AX\) where \(A\) is as documented for the makeReflection method.

Parameters
axisReflection axis
glideHow many glide apply in the direction of reflection axis afther the reflection
Returns
Glide reflection rigid motion
See also
rigidmotion::RigidMotionR2Factory::makeReflection(colvec)

◆ makeGlideReflection() [2/2]

RigidMotion RigidMotionR2Factory::makeGlideReflection ( double const  theta,
double const  glide 
) const
virtual

As makeGlideReflection method but receiving \(\theta\) as the angle between reflection axis and \(e_1\) instead of the reflection axis itself.

Parameters
thetaAngle between \(e_1\) (unitary vector for x-axis in canonical basis) and rotation axis
glideHow many glide apply in the direction of reflection axis afther the reflection
See also
RigidMotionR2Factory::makeGlideReflection(colvec, double)

◆ makeIdentity()

RigidMotion RigidMotionR2Factory::makeIdentity ( ) const
overridevirtual

Implementation of identity rigid motion in \(\mathbb{R}^{2}\).

See also
rigidmotion::RigidMotionFactory::makeIdentity

Implements rigidmotion::RigidMotionFactory.

◆ makeReflection() [1/2]

RigidMotion RigidMotionR2Factory::makeReflection ( colvec const  axis) const
virtual

Implementation of reflection rigid motion in \(\mathbb{R}^{2}\).

Let \(\vec{u}\) be an arbitrary axis and let \(\theta\) be the angle between \(\vec{u}\) and \(e_1\). Thus, the affine application for the reflection would be \(Y = \vec{0} + AX\) where \(A\) is:

\[ A = \left[\begin{array}{ll} \cos(2\theta) & \sin(2\theta) \\ \sin(2\theta) & -\cos(2\theta) \end{array}\right] \]

Parameters
axisReflection axis
Returns
Reflection rigid motion in \(\mathbb{R}^{2}\)

◆ makeReflection() [2/2]

RigidMotion RigidMotionR2Factory::makeReflection ( double const  theta) const
virtual

As makeReflection method but receiving \(\theta\) as the angle between reflection axis and \(e_1\) instead of the reflection axis itself.

Parameters
thetaAngle between \(e_1\) (unitary vector for x-axis in canonical basis) and rotation axis
See also
rigidmotion::RigidMotionR2Factory::makeReflection(colvec)

◆ makeRotation()

RigidMotion RigidMotionR2Factory::makeRotation ( double const  theta,
colvec const  center 
) const
virtual

Implementation of rotation rigid motion in \(\mathbb{R}^{2}\).

Let \(\theta\) be the rotation angle and \(Q=(Q_x, Q_y)\) be the rotation center. Now, the affine application for the rotation would be \(Y = C + AX\) where:

\[ A = \left[\begin{array}{ll} \cos(\theta) & -\sin(\theta) \\ \sin(\theta) & \cos(\theta) \end{array}\right] \]

and

\[ C = (I-A)Q = \left[\begin{array}{ll} 1-\cos(\theta) & \sin(\theta) \\ -\sin(\theta) & 1-\cos(\theta) \end{array}\right] \left[\begin{array}{l} Q_x \\ Q_y \end{array}\right] \]

Parameters
thetaThe rotation angle
centerThe rotation center point
Returns
Rotation rigid motion in \(\mathbb{R}^{2}\)

◆ makeTranslation()

RigidMotion RigidMotionR2Factory::makeTranslation ( colvec const  shift) const
override

Implementation of translation rigid motion in \(\mathbb{R}^{2}\).

See also
rigidmotion::RigidMotionFactory::makeTranslation

◆ serialize()

template<typename Archive >
void rigidmotion::RigidMotionR2Factory::serialize ( Archive &  ar,
const unsigned int  version 
)
inlineprivate

Serialize a \(\mathbb{R}^{2}\) rigid motion factory to a stream of bytes.

Template Parameters
ArchiveType of rendering
Parameters
arSpecific rendering for the stream of bytes
versionVersion number for the \(\mathbb{R}^{2}\) rigid motion factory

The documentation for this class was generated from the following files: