Galaxis Codebase  1.0.0
Team Galaxis software stack for the Carolo Cup 2023 - ROS2 based software
galaxis::PolySpline Class Reference

#include <poly.hpp>

Public Member Functions

 PolySpline ()
 
 PolySpline (std::array< double, 4 > coeff, double max, double min)
 
void add_polynom (interval const &p_interval, polynom const &p_polynom)
 
void add_polynom (float lowerBound, float upperBound, polynom const &polynom)
 
float evaluate (float p_x) const
 
void clear ()
 

Public Attributes

std::vector< galaxis::interval > m_intervalVec
 
std::vector< galaxis::polynom > m_polynomVec
 

Detailed Description

Definition at line 37 of file poly.hpp.

Constructor & Destructor Documentation

◆ PolySpline() [1/2]

PolySpline::PolySpline ( )

Definition at line 187 of file poly.cpp.

187 {}

◆ PolySpline() [2/2]

PolySpline::PolySpline ( std::array< double, 4 >  coeff,
double  max,
double  min 
)

Definition at line 189 of file poly.cpp.

189  {
190  m_polynomVec.resize(2);
191  for(uint32_t i = 0; i < coeff.size(); i ++){
192  m_polynomVec.at(0).push_back(coeff.at(i));
193  }
194 
195  m_intervalVec.push_back(std::tuple<float, float>(min,max));
196 }

Member Function Documentation

◆ add_polynom() [1/2]

void PolySpline::add_polynom ( float  lowerBound,
float  upperBound,
polynom const &  polynom 
)

Definition at line 204 of file poly.cpp.

204  {
205  interval interv = std::make_tuple(lowerBound, upperBound);
206  add_polynom(interv, polynom);
207 }

◆ add_polynom() [2/2]

void PolySpline::add_polynom ( interval const &  p_interval,
polynom const &  p_polynom 
)

Definition at line 198 of file poly.cpp.

198  {
199  // TODO: add interval check
200  m_intervalVec.push_back(p_interval);
201  m_polynomVec.push_back(polynom(p_polynom));
202 }

◆ clear()

void PolySpline::clear ( )

Definition at line 219 of file poly.cpp.

219  {
220  m_intervalVec.clear();
221  m_polynomVec.clear();
222 }

◆ evaluate()

float PolySpline::evaluate ( float  p_x) const

Definition at line 209 of file poly.cpp.

209  {
210  for(size_t i = 0; i < m_intervalVec.size(); ++i) {
211  if(p_x >= std::get<0>(m_intervalVec[i]) && p_x <= std::get<1>(m_intervalVec[i])) {
212  return utils::evaluate_polynom(m_polynomVec[i], p_x);
213  }
214  }
215  // log_error("No polynominterval for x.");
216  return 0;
217 }

References galaxis::utils::evaluate_polynom().

Referenced by galaxis::calculate_error_between_polyspline_point().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ m_intervalVec

std::vector<galaxis::interval> galaxis::PolySpline::m_intervalVec

Definition at line 39 of file poly.hpp.

◆ m_polynomVec

std::vector<galaxis::polynom> galaxis::PolySpline::m_polynomVec

Definition at line 40 of file poly.hpp.


The documentation for this class was generated from the following files:
galaxis::PolySpline::m_intervalVec
std::vector< galaxis::interval > m_intervalVec
Definition: poly.hpp:39
galaxis::utils::evaluate_polynom
float evaluate_polynom(polynom const &p_polynomRef, float p_x)
Definition: poly.cpp:50
galaxis::PolySpline::add_polynom
void add_polynom(interval const &p_interval, polynom const &p_polynom)
Definition: poly.cpp:198
galaxis::PolySpline::m_polynomVec
std::vector< galaxis::polynom > m_polynomVec
Definition: poly.hpp:40
galaxis::polynom
std::vector< float > polynom
Definition: poly.hpp:20
galaxis::interval
std::tuple< float, float > interval
Definition: poly.hpp:21