File motion_walker.hpp

This file contains a set of artifical motion generators. They are used to superimpose artifical with the specific dynamics provided by the trajectory files.

Author

Benjamin Lindner ben@benlabs.net

Version

See VERSION in CMakeLists.txt

Copyright

GNU General Public License

class MotionWalker
#include <motion_walker.hpp>

Interface for an artficial motion generator.

Subclassed by BrownianMotionWalker, FixedMotionWalker, LinearMotionWalker, LocalBrownianMotionWalker, OscillationMotionWalker, RandomMotionWalker, RotationalBrownianMotionWalker

Public Functions

virtual boost::numeric::ublas::matrix<double> transform(size_t timepos) = 0

Protected Functions

template<class Archive>
inline void serialize(Archive &ar, const unsigned int version)

Friends

friend class boost::serialization::access
class LinearMotionWalker : public MotionWalker
#include <motion_walker.hpp>

Generates a linear motion.

Public Functions

LinearMotionWalker(double displace, long sampling, CartesianCoor3D direction)
virtual boost::numeric::ublas::matrix<double> transform(size_t timepos)

Protected Functions

template<class Archive>
inline void serialize(Archive &ar, const unsigned int version)
void generate(size_t timepos)
inline LinearMotionWalker()
CartesianCoor3D translation(size_t timepos)

Protected Attributes

CartesianCoor3D m_translate

Friends

friend class boost::serialization::access
class FixedMotionWalker : public MotionWalker
#include <motion_walker.hpp>

No motion. Fixed offset.

Public Functions

FixedMotionWalker(double displace, CartesianCoor3D direction)
virtual boost::numeric::ublas::matrix<double> transform(size_t timepos)

Protected Functions

template<class Archive>
inline void serialize(Archive &ar, const unsigned int version)
inline FixedMotionWalker()
CartesianCoor3D translation(size_t timepos)

Protected Attributes

CartesianCoor3D m_translate

Friends

friend class boost::serialization::access
class OscillationMotionWalker : public MotionWalker
#include <motion_walker.hpp>

Sinusoidal Oscillation with amplitude and frequency.

Public Functions

OscillationMotionWalker(double displace, double frequency, long sampling, CartesianCoor3D direction)
virtual boost::numeric::ublas::matrix<double> transform(size_t timepos)

Protected Functions

template<class Archive>
inline void serialize(Archive &ar, const unsigned int version)
inline OscillationMotionWalker()
CartesianCoor3D translation(size_t timepos)

Protected Attributes

CartesianCoor3D m_translate
double m_frequency
size_t m_sampling

Friends

friend class boost::serialization::access
class RandomMotionWalker : public MotionWalker
#include <motion_walker.hpp>

Simple random motion in 3D with a constant step size.

Public Functions

RandomMotionWalker(double displace, unsigned long seed, long sampling, CartesianCoor3D direction)
~RandomMotionWalker()
virtual boost::numeric::ublas::matrix<double> transform(size_t timepos)

Protected Functions

template<class Archive>
inline void serialize(Archive &ar, const unsigned int version)
void init()
void generate(size_t timepos)
inline RandomMotionWalker()
CartesianCoor3D translation(size_t timepos)

Protected Attributes

std::map<size_t, CartesianCoor3D> translations
bool m_init
double m_displace
unsigned long m_seed
size_t m_sampling
CartesianCoor3D m_direction
boost::variate_generator<boost::mt19937, boost::uniform_on_sphere<double>> *p_myspheredistribution

Friends

friend class boost::serialization::access
class BrownianMotionWalker : public MotionWalker
#include <motion_walker.hpp>

Brownian motion in 3D which draws the step size from a gaussian distribution for the given mean (displace)

Public Functions

BrownianMotionWalker(double displace, unsigned long seed, long sampling, CartesianCoor3D direction)
~BrownianMotionWalker()
virtual boost::numeric::ublas::matrix<double> transform(size_t timepos)

Protected Functions

template<class Archive>
inline void serialize(Archive &ar, const unsigned int version)
void init()
void generate(size_t timepos)
inline BrownianMotionWalker()
CartesianCoor3D translation(size_t timepos)

Protected Attributes

std::map<size_t, CartesianCoor3D> translations
bool m_init
double m_displace
unsigned long m_seed
size_t m_sampling
CartesianCoor3D m_direction
boost::variate_generator<boost::mt19937, boost::normal_distribution<double>> *p_mynormaldistribution
boost::variate_generator<boost::mt19937, boost::uniform_on_sphere<double>> *p_myspheredistribution

Friends

friend class boost::serialization::access
class LocalBrownianMotionWalker : public MotionWalker
#include <motion_walker.hpp>

Brownian motion in 3D which draws the step size from a gaussian distribution for the given mean (displace) and constrains the motion to the maximum radius.

Public Functions

LocalBrownianMotionWalker(double radius, double displace, unsigned long seed, long sampling, CartesianCoor3D direction)
~LocalBrownianMotionWalker()
virtual boost::numeric::ublas::matrix<double> transform(size_t timepos)

Protected Functions

template<class Archive>
inline void serialize(Archive &ar, const unsigned int version)
void init()
void generate(size_t timepos)
inline LocalBrownianMotionWalker()
CartesianCoor3D translation(size_t timepos)

Protected Attributes

std::map<size_t, CartesianCoor3D> translations
bool m_init
double m_radius
double m_displace
unsigned long m_seed
size_t m_sampling
CartesianCoor3D m_direction
boost::variate_generator<boost::mt19937, boost::normal_distribution<double>> *p_mynormaldistribution
boost::variate_generator<boost::mt19937, boost::uniform_on_sphere<double>> *p_myspheredistribution

Friends

friend class boost::serialization::access
class RotationalBrownianMotionWalker : public MotionWalker
#include <motion_walker.hpp>

Rotational Brownian motion in 3D which draws the angular step size from a gaussian distribution for the given mean (displace)

Public Functions

RotationalBrownianMotionWalker(double displace, unsigned long seed, long sampling)
~RotationalBrownianMotionWalker()
virtual boost::numeric::ublas::matrix<double> transform(size_t timepos)

Protected Functions

template<class Archive>
inline void serialize(Archive &ar, const unsigned int version)
void init()
void generate(size_t timepos)
inline RotationalBrownianMotionWalker()

Protected Attributes

std::map<size_t, boost::numeric::ublas::matrix<double>> transformations
bool m_init
double m_displace
unsigned long m_seed
size_t m_sampling
boost::variate_generator<boost::mt19937, boost::normal_distribution<double>> *p_mynormaldistribution
boost::variate_generator<boost::mt19937, boost::uniform_on_sphere<double>> *p_myspheredistribution

Friends

friend class boost::serialization::access