Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
vcsl_rotation Class Reference

Rotation transformation (either 2D or 3D). More...

#include <vcsl_rotation.h>

Inheritance diagram for vcsl_rotation:
Inheritance graph
[legend]

Public Member Functions

 vcsl_rotation ()
 Default constructor. Sets 3D rotation mode. More...
 
 ~vcsl_rotation () override=default
 
bool is_invertible (double) const override
 Is ‘this’ invertible at time ‘time’?. More...
 
bool is_valid () const override
 Is ‘this’ correctly set ?. More...
 
bool are_unit_axes (list_of_vectors const &new_axis) const
 Are ‘new_vector’ a list of unit vectors ?. More...
 
bool is_2d () const
 Is ‘this’ a 2D rotation ?. More...
 
bool is_3d () const
 Is ‘this’ a 3D rotation ?. More...
 
void set_2d ()
 Set ‘this’ as a 2D rotation. More...
 
void set_3d ()
 Set ‘this’ as a 3D rotation. More...
 
void set_static_2d (double new_angle)
 Set the parameters of a static 2D rotation. More...
 
void set_static (double new_angle, vnl_vector< double > const &new_axis)
 Set the parameters of a static rotation. More...
 
void set_angle (list_of_scalars const &new_angle)
 Set the angle variation along the time in radians. More...
 
list_of_scalars angle () const
 Return the angle variation along the time in radians. More...
 
void set_axis (list_of_vectors const &new_axis)
 Set the direction vector variation along the time. More...
 
list_of_vectors axis () const
 Return the direction variation along the time. More...
 
vnl_vector< double > execute (const vnl_vector< double > &v, double time) const override
 Image of ‘v’ by ‘this’. More...
 
vnl_vector< double > inverse (const vnl_vector< double > &v, double time) const override
 Image of ‘v’ by the inverse of ‘this’. More...
 
std::vector< double > beat () const
 Return the list of time clocks. More...
 
unsigned int duration () const
 Return the time duration. More...
 
std::vector< vcsl_interpolatorinterpolators () const
 Return the list of interpolators. More...
 
bool valid_time (double time) const
 Is ‘time’ between the two time bounds ?. More...
 
int matching_interval (double time) const
 Return the index of the beat inferior or equal to ‘time’. More...
 
void set_beat (std::vector< double > const &new_beat)
 Set the list of time clocks. More...
 
void set_interpolators (std::vector< vcsl_interpolator > const &i)
 Set the list of interpolators. More...
 
void set_static ()
 Empty the time clock and interpolators, thereby making the transf static. More...
 
double lsi (double v0, double v1, int index, double time) const
 Linear interpolation on scalar values. More...
 
vnl_vector< double > lvi (const vnl_vector< double > &v0, const vnl_vector< double > &v1, int index, double time) const
 Linear interpolation on vnl_vectors. More...
 
vnl_matrix< double > lmi (const vnl_matrix< double > &m0, const vnl_matrix< double > &m1, int index, double time) const
 Linear interpolation on vnl_matrices. More...
 
vnl_quaternion< double > lqi (const vnl_quaternion< double > &v0, const vnl_quaternion< double > &v1, int index, double time) const
 Linear interpolation on quaternions. More...
 
void ref ()
 
void unref ()
 
long get_references () const
 
bool is_referenced () const
 

Protected Member Functions

vnl_quaternion< double > quaternion (double time) const
 Compute the value of the quaternion at time ‘time’. More...
 

Protected Attributes

bool mode_2d_
 False if ‘this’ is a 3D rotation, true if ‘this’ is a 2D rotation. More...
 
list_of_scalars angle_
 Angle variation along the time in radians. More...
 
list_of_vectors axis_
 Direction vector variation along the time. More...
 
std::vector< double > beat_
 List of time clocks. More...
 
std::vector< vcsl_interpolatorinterpolator_
 

Detailed Description

Rotation transformation (either 2D or 3D).

A rotation rotates a point around an axis passing through the origin. For a more general rotation (affine rotation or displacement), see the derived class vcsl_displacement

Definition at line 26 of file vcsl_rotation.h.

Constructor & Destructor Documentation

◆ vcsl_rotation()

vcsl_rotation::vcsl_rotation ( )
inline

Default constructor. Sets 3D rotation mode.

Definition at line 35 of file vcsl_rotation.h.

◆ ~vcsl_rotation()

vcsl_rotation::~vcsl_rotation ( )
overridedefault

Member Function Documentation

◆ angle()

list_of_scalars vcsl_rotation::angle ( ) const
inline

Return the angle variation along the time in radians.

Definition at line 89 of file vcsl_rotation.h.

◆ are_unit_axes()

bool vcsl_rotation::are_unit_axes ( list_of_vectors const &  new_axis) const

Are ‘new_vector’ a list of unit vectors ?.

Definition at line 11 of file vcsl_rotation.cxx.

◆ axis()

list_of_vectors vcsl_rotation::axis ( ) const
inline

Return the direction variation along the time.

Definition at line 96 of file vcsl_rotation.h.

◆ beat()

std::vector<double> vcsl_spatial_transformation::beat ( ) const
inlineinherited

Return the list of time clocks.

Definition at line 65 of file vcsl_spatial_transformation.h.

◆ duration()

unsigned int vcsl_spatial_transformation::duration ( ) const
inlineinherited

Return the time duration.

Definition at line 68 of file vcsl_spatial_transformation.h.

◆ execute()

vnl_vector< double > vcsl_rotation::execute ( const vnl_vector< double > &  v,
double  time 
) const
overridevirtual

Image of ‘v’ by ‘this’.

REQUIRE: is_valid() REQUIRE: (is_2d()&&v.size()==2)||(is_3d()&&v.size()==3) Pure virtual function of vcsl_spatial_transformation

Implements vcsl_spatial_transformation.

Definition at line 63 of file vcsl_rotation.cxx.

◆ interpolators()

std::vector<vcsl_interpolator> vcsl_spatial_transformation::interpolators ( ) const
inlineinherited

Return the list of interpolators.

Definition at line 71 of file vcsl_spatial_transformation.h.

◆ inverse()

vnl_vector< double > vcsl_rotation::inverse ( const vnl_vector< double > &  v,
double  time 
) const
overridevirtual

Image of ‘v’ by the inverse of ‘this’.

REQUIRE: is_valid() REQUIRE: is_invertible(time) REQUIRE (is_2d()&&v.size()==2)||(is_3d()&&v.size()==3) Pure virtual function of vcsl_spatial_transformation

Implements vcsl_spatial_transformation.

Definition at line 93 of file vcsl_rotation.cxx.

◆ is_2d()

bool vcsl_rotation::is_2d ( ) const
inline

Is ‘this’ a 2D rotation ?.

Definition at line 60 of file vcsl_rotation.h.

◆ is_3d()

bool vcsl_rotation::is_3d ( ) const
inline

Is ‘this’ a 3D rotation ?.

Definition at line 63 of file vcsl_rotation.h.

◆ is_invertible()

bool vcsl_rotation::is_invertible ( double  ) const
inlineoverridevirtual

Is ‘this’ invertible at time ‘time’?.

REQUIRE: valid_time(time) Pure virtual function of vcsl_spatial_transformation

Implements vcsl_spatial_transformation.

Definition at line 47 of file vcsl_rotation.h.

◆ is_valid()

bool vcsl_rotation::is_valid ( ) const
inlineoverridevirtual

Is ‘this’ correctly set ?.

Virtual function of vcsl_spatial_transformation

Reimplemented from vcsl_spatial_transformation.

Definition at line 51 of file vcsl_rotation.h.

◆ lmi()

vnl_matrix< double > vcsl_spatial_transformation::lmi ( const vnl_matrix< double > &  m0,
const vnl_matrix< double > &  m1,
int  index,
double  time 
) const
inherited

Linear interpolation on vnl_matrices.

Definition at line 94 of file vcsl_spatial_transformation.cxx.

◆ lqi()

vnl_quaternion< double > vcsl_spatial_transformation::lqi ( const vnl_quaternion< double > &  v0,
const vnl_quaternion< double > &  v1,
int  index,
double  time 
) const
inherited

Linear interpolation on quaternions.

Definition at line 121 of file vcsl_spatial_transformation.cxx.

◆ lsi()

double vcsl_spatial_transformation::lsi ( double  v0,
double  v1,
int  index,
double  time 
) const
inherited

Linear interpolation on scalar values.

Definition at line 53 of file vcsl_spatial_transformation.cxx.

◆ lvi()

vnl_vector< double > vcsl_spatial_transformation::lvi ( const vnl_vector< double > &  v0,
const vnl_vector< double > &  v1,
int  index,
double  time 
) const
inherited

Linear interpolation on vnl_vectors.

Definition at line 69 of file vcsl_spatial_transformation.cxx.

◆ matching_interval()

int vcsl_spatial_transformation::matching_interval ( double  time) const
inherited

Return the index of the beat inferior or equal to ‘time’.

REQUIRE: valid_time(time)

Definition at line 22 of file vcsl_spatial_transformation.cxx.

◆ quaternion()

vnl_quaternion< double > vcsl_rotation::quaternion ( double  time) const
protected

Compute the value of the quaternion at time ‘time’.

Definition at line 122 of file vcsl_rotation.cxx.

◆ set_2d()

void vcsl_rotation::set_2d ( )
inline

Set ‘this’ as a 2D rotation.

Definition at line 70 of file vcsl_rotation.h.

◆ set_3d()

void vcsl_rotation::set_3d ( )
inline

Set ‘this’ as a 3D rotation.

Definition at line 73 of file vcsl_rotation.h.

◆ set_angle()

void vcsl_rotation::set_angle ( list_of_scalars const &  new_angle)
inline

Set the angle variation along the time in radians.

Definition at line 86 of file vcsl_rotation.h.

◆ set_axis()

void vcsl_rotation::set_axis ( list_of_vectors const &  new_axis)

Set the direction vector variation along the time.

REQUIRE: are_unit_vectors(new_vector)

Definition at line 50 of file vcsl_rotation.cxx.

◆ set_beat()

void vcsl_spatial_transformation::set_beat ( std::vector< double > const &  new_beat)
inlineinherited

Set the list of time clocks.

Definition at line 109 of file vcsl_spatial_transformation.h.

◆ set_interpolators()

void vcsl_spatial_transformation::set_interpolators ( std::vector< vcsl_interpolator > const &  i)
inlineinherited

Set the list of interpolators.

Definition at line 112 of file vcsl_spatial_transformation.h.

◆ set_static() [1/2]

void vcsl_rotation::set_static ( double  new_angle,
vnl_vector< double > const &  new_axis 
)

Set the parameters of a static rotation.

Definition at line 37 of file vcsl_rotation.cxx.

◆ set_static() [2/2]

void vcsl_spatial_transformation::set_static ( )
inherited

Empty the time clock and interpolators, thereby making the transf static.

Definition at line 44 of file vcsl_spatial_transformation.cxx.

◆ set_static_2d()

void vcsl_rotation::set_static_2d ( double  new_angle)

Set the parameters of a static 2D rotation.

Definition at line 27 of file vcsl_rotation.cxx.

◆ valid_time()

bool vcsl_spatial_transformation::valid_time ( double  time) const
inherited

Is ‘time’ between the two time bounds ?.

Definition at line 12 of file vcsl_spatial_transformation.cxx.

Member Data Documentation

◆ angle_

list_of_scalars vcsl_rotation::angle_
protected

Angle variation along the time in radians.

Definition at line 125 of file vcsl_rotation.h.

◆ axis_

list_of_vectors vcsl_rotation::axis_
protected

Direction vector variation along the time.

Definition at line 128 of file vcsl_rotation.h.

◆ beat_

std::vector<double> vcsl_spatial_transformation::beat_
protectedinherited

List of time clocks.

Definition at line 147 of file vcsl_spatial_transformation.h.

◆ interpolator_

std::vector<vcsl_interpolator> vcsl_spatial_transformation::interpolator_
protectedinherited

Definition at line 148 of file vcsl_spatial_transformation.h.

◆ mode_2d_

bool vcsl_rotation::mode_2d_
protected

False if ‘this’ is a 3D rotation, true if ‘this’ is a 2D rotation.

Definition at line 122 of file vcsl_rotation.h.


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