Helios++
Helios software for LiDAR simulations
RigidMotionEngine.h
1 #pragma once
2 
3 #include <maths/rigidmotion/RigidMotion.h>
4 
5 #include <armadillo>
6 
7 using namespace arma;
8 
9 namespace rigidmotion{
10 
20 private:
21  // *** SERIALIZATION *** //
22  // *********************** //
23  friend class boost::serialization::access;
30  template <typename Archive>
31  void serialize(Archive &ar, const unsigned int version) {}
32 
33 public:
34  // *** CONSTRUCTION / DESTRUCTION *** //
35  // ************************************ //
39  RigidMotionEngine() = default;
40  virtual ~RigidMotionEngine() = default;
41 
42  // *** RIGID MOTION ENGINE METHODS *** //
43  // ************************************* //
60  arma::mat apply(RigidMotion const &f, arma::mat const &X);
74  colvec apply(RigidMotion const &f, colvec const &X);
83  RigidMotion compose(RigidMotion const &f, RigidMotion const &g);
109  arma::mat computeFixedPoints(
110  RigidMotion const &f,
111  size_t &dim,
112  bool safe=true
113  );
141  arma::mat computeAssociatedInvariant(
142  RigidMotion const &f,
143  size_t &dim,
144  bool safe=true
145  );
146 };
147 }
Class to handle operations with rigid motions.
Definition: RigidMotionEngine.h:19
RigidMotionEngine()=default
RigidMotionEngine default constructor.
arma::mat apply(RigidMotion const &f, arma::mat const &X)
Apply rigid motion to a matrix of points .
void serialize(Archive &ar, const unsigned int version)
Serialize a rigid motion engine to a stream of bytes.
Definition: RigidMotionEngine.h:31
Interface that must be implemented by any class which represents a specific rigid motions.
Definition: RigidMotion.h:49