Helios++
Helios software for LiDAR simulations
DesignTrajectoryFunction.h
1 #pragma once
2 
3 #include <platform/trajectory/TrajectoryFunction.h>
4 #include <fluxionum/ParametricClosestLesserSampleFunction.h>
5 #include <fluxionum/FixedParametricIterativeEulerMethod.h>
6 
7 #include <armadillo>
8 
26 protected:
27  // *** ATTRIBUTES *** //
28  // ******************** //
51  double lastTime;
52 
53 public:
54  // *** CONSTRUCTION / DESTRUCTION *** //
55  // ************************************ //
63  arma::Col<double> const &timeFrontiers,
64  arma::Mat<double> const &frontierValues,
65  arma::Mat<double> const &frontierDerivatives
66  ) :
68  pclsf(timeFrontiers, frontierDerivatives, 0),
69  fpiem(
70  pclsf,
71  timeFrontiers(0),
72  frontierValues.row(0).as_col(),
73  timeFrontiers,
74  frontierValues,
75  0
76  ),
77  lastTime(0)
78  {}
79  virtual ~DesignTrajectoryFunction() = default;
80 
81  // *** TRAJECTORY FUNCTION *** //
82  // ***************************** //
88  arma::Col<double> eval(double const &t) override{
89  double const h = t-lastTime;
90  lastTime = t;
91  return fpiem(h);
92  }
93 
94  // *** GETTERs and SETTERs *** //
95  // ***************************** //
105  getPclsf() {return pclsf;}
115  getFpiem() {return fpiem;}
121  inline double getLastTime() const {return lastTime;}
127  inline void setLastTime(double const lastTime) {this->lastTime = lastTime;}
128 
129 };
Class representing a trajectory function that comes from interpolating a TemporalDesignMatrix using i...
Definition: DesignTrajectoryFunction.h:25
fluxionum::FixedParametricIterativeEulerMethod< double, double > fpiem
The function solving the Euler method to estimate the parametric function.
Definition: DesignTrajectoryFunction.h:46
void setLastTime(double const lastTime)
Set the last time evaluated by this function.
Definition: DesignTrajectoryFunction.h:127
double lastTime
The last time value evaluated by this function. By default, it is 0.
Definition: DesignTrajectoryFunction.h:51
fluxionum::ParametricClosestLesserSampleFunction< double, double > & getPclsf()
Obtain the parametric closest lesser sample function used to compute the design trajectory function.
Definition: DesignTrajectoryFunction.h:105
double getLastTime() const
Obtain the last time evaluated by this function.
Definition: DesignTrajectoryFunction.h:121
DesignTrajectoryFunction(arma::Col< double > const &timeFrontiers, arma::Mat< double > const &frontierValues, arma::Mat< double > const &frontierDerivatives)
Default constructor for DesignTrajectoryFunction.
Definition: DesignTrajectoryFunction.h:62
arma::Col< double > eval(double const &t) override
Evaluate the function .
Definition: DesignTrajectoryFunction.h:88
fluxionum::ParametricClosestLesserSampleFunction< double, double > pclsf
The function approximating the derivatives at a given time.
Definition: DesignTrajectoryFunction.h:38
fluxionum::FixedParametricIterativeEulerMethod< double, double > & getFpiem()
Obtain the fixed parametric iterative Euler method used to compute the design trajectory function.
Definition: DesignTrajectoryFunction.h:115
Abstract class representing a trajectory function .
Definition: TrajectoryFunction.h:25