Helios++
Helios software for LiDAR simulations
RigidMotionR2Factory.h
1 #pragma once
2 
3 #include <rigidmotion/RigidMotionFactory.h>
4 
5 #include <armadillo>
6 #include <boost/serialization/base_object.hpp>
7 #include <boost/serialization/void_cast.hpp>
8 
9 using namespace arma;
10 
11 namespace rigidmotion{
12 
23 private:
24  // *** SERIALIZATION *** //
25  // *********************** //
26  friend class boost::serialization::access;
35  template <typename Archive>
36  void serialize(Archive &ar, const unsigned int version){
37  boost::serialization::void_cast_register<
40  >();
41  ar &boost::serialization::base_object<RigidMotionFactory>(*this);
42  }
43 
44 public:
45  // *** CONSTRUCTION / DESTRUCTION *** //
46  // ************************************ //
50  RigidMotionR2Factory() = default;
51  virtual ~RigidMotionR2Factory() = default;
52 
53  // *** RIGID MOTION FACTORY METHODS *** //
54  // ************************************** //
59  RigidMotion makeIdentity() const override;
65  RigidMotion makeTranslation(colvec const shift) const override;
83  virtual RigidMotion makeReflection(colvec const axis) const;
92  virtual RigidMotion makeReflection(double const theta) const;
113  virtual RigidMotion makeGlideReflection(
114  colvec const axis,
115  double const glide
116  ) const;
128  virtual RigidMotion makeGlideReflection(
129  double const theta,
130  double const glide
131  ) const;
163  virtual RigidMotion makeRotation(
164  double const theta,
165  colvec const center
166  ) const;
167 };
168 
169 }
Class that must be extended by any class which provides factory methods for rigid motions....
Definition: RigidMotionFactory.h:18
Class providing building methods for rigid motions in .
Definition: RigidMotionR2Factory.h:22
void serialize(Archive &ar, const unsigned int version)
Serialize a rigid motion factory to a stream of bytes.
Definition: RigidMotionR2Factory.h:36
RigidMotionR2Factory()=default
RigidMotionR2Factory default constructor.
Interface that must be implemented by any class which represents a specific rigid motions.
Definition: RigidMotion.h:49