hpp-spline  4.10.0
template based classes for creating and manipulating spline and bezier curves. Comes with extra options specific to end-effector trajectories in robotics.
bernstein.h
Go to the documentation of this file.
1 
9 #ifndef _CLASS_BERNSTEIN
10 #define _CLASS_BERNSTEIN
11 
12 #include "curve_abc.h"
13 
14 #include "MathDefs.h"
15 
16 #include <math.h>
17 #include <vector>
18 #include <stdexcept>
19 
20 namespace spline {
24 inline unsigned int fact(const unsigned int n) {
25  unsigned int res = 1;
26  for (unsigned int i = 2; i <= n; ++i) res *= i;
27  return res;
28 }
29 
33 inline unsigned int bin(const unsigned int n, const unsigned int k) { return fact(n) / (fact(k) * fact(n - k)); }
34 
38 template <typename Numeric = double>
39 struct Bern {
40  Bern(const unsigned int m, const unsigned int i) : m_minus_i(m - i), i_(i), bin_m_i_(bin(m, i)) {}
41 
42  ~Bern() {}
43 
44  Numeric operator()(const Numeric u) const {
45  assert(u >= 0. && u <= 1.);
46  return bin_m_i_ * (pow(u, i_)) * pow((1 - u), m_minus_i);
47  }
48 
52 };
53 
57 template <typename Numeric>
58 std::vector<Bern<Numeric> > makeBernstein(const unsigned int n) {
59  std::vector<Bern<Numeric> > res;
60  for (unsigned int i = 0; i <= n; ++i) res.push_back(Bern<Numeric>(n, i));
61  return res;
62 }
63 } // namespace spline
64 #endif //_CLASS_BERNSTEIN
spline::Bern::i_
Numeric i_
Definition: bernstein.h:50
spline::Bern::~Bern
~Bern()
Definition: bernstein.h:42
spline::Bern::bin_m_i_
Numeric bin_m_i_
Definition: bernstein.h:51
spline::makeBernstein
std::vector< Bern< Numeric > > makeBernstein(const unsigned int n)
Computes all Bernstein polynomes for a certain degree.
Definition: bernstein.h:58
spline::helpers::Numeric
double Numeric
Definition: effector_spline.h:26
spline::Bern::operator()
Numeric operator()(const Numeric u) const
Definition: bernstein.h:44
spline::Bern
Definition: bernstein.h:39
curve_abc.h
interface for a Curve of arbitrary dimension.
spline::bin
unsigned int bin(const unsigned int n, const unsigned int k)
Computes a binomal coefficient.
Definition: bernstein.h:33
MathDefs.h
spline::Bern::Bern
Bern(const unsigned int m, const unsigned int i)
Definition: bernstein.h:40
spline::fact
unsigned int fact(const unsigned int n)
Computes factorial of a number.
Definition: bernstein.h:24
spline::Bern::m_minus_i
Numeric m_minus_i
Definition: bernstein.h:49
spline
Definition: bernstein.h:20