a

Dependencies:   mbed mbed-rtos

Committer:
alexpirciu
Date:
Thu Mar 28 07:44:42 2019 +0000
Revision:
1:ceee5a608e7c
assa

Who changed what in which revision?

UserRevisionLine numberNew contents of line
alexpirciu 1:ceee5a608e7c 1 /**
alexpirciu 1:ceee5a608e7c 2 ******************************************************************************
alexpirciu 1:ceee5a608e7c 3 * @file BezierCurve.hpp
alexpirciu 1:ceee5a608e7c 4 * @author RBRO/PJ-IU
alexpirciu 1:ceee5a608e7c 5 * @version V1.0.0
alexpirciu 1:ceee5a608e7c 6 * @date day-month-year
alexpirciu 1:ceee5a608e7c 7 * @brief This file contains the class declaration for the Bezier Curve
alexpirciu 1:ceee5a608e7c 8 * methods.
alexpirciu 1:ceee5a608e7c 9 ******************************************************************************
alexpirciu 1:ceee5a608e7c 10 */
alexpirciu 1:ceee5a608e7c 11
alexpirciu 1:ceee5a608e7c 12 /* include guard */
alexpirciu 1:ceee5a608e7c 13 #ifndef BEZIERCURVE_HPP
alexpirciu 1:ceee5a608e7c 14 #define BEZIERCURVE_HPP
alexpirciu 1:ceee5a608e7c 15
alexpirciu 1:ceee5a608e7c 16 /* complex numbers in cartesian form and several functions and overloads to operate with them */
alexpirciu 1:ceee5a608e7c 17 #include <complex>
alexpirciu 1:ceee5a608e7c 18 #include <BezierCurve/PolynomialFunction.hpp>
alexpirciu 1:ceee5a608e7c 19
alexpirciu 1:ceee5a608e7c 20 #define BEZIER_ORDER 3
alexpirciu 1:ceee5a608e7c 21
alexpirciu 1:ceee5a608e7c 22 namespace math{
alexpirciu 1:ceee5a608e7c 23 /**
alexpirciu 1:ceee5a608e7c 24 * @brief It implements the functionality of a Bezier curve. The points on the curve are represented by complex numbers and the input value of the curve have to belong to the interval [0,1].
alexpirciu 1:ceee5a608e7c 25 *
alexpirciu 1:ceee5a608e7c 26 * @tparam T The type of the Bezier curve.
alexpirciu 1:ceee5a608e7c 27 */
alexpirciu 1:ceee5a608e7c 28 template<class T>
alexpirciu 1:ceee5a608e7c 29 class BezierCurve
alexpirciu 1:ceee5a608e7c 30 {
alexpirciu 1:ceee5a608e7c 31 public:
alexpirciu 1:ceee5a608e7c 32 /* Constructors */
alexpirciu 1:ceee5a608e7c 33 BezierCurve();
alexpirciu 1:ceee5a608e7c 34 BezierCurve(std::complex<T> points[BEZIER_ORDER+1]);
alexpirciu 1:ceee5a608e7c 35 BezierCurve(std::complex<T> a,std::complex<T> b,std::complex<T> c,std::complex<T> d);
alexpirciu 1:ceee5a608e7c 36 /* Destructor */
alexpirciu 1:ceee5a608e7c 37 virtual ~BezierCurve();
alexpirciu 1:ceee5a608e7c 38 /* Set curve */
alexpirciu 1:ceee5a608e7c 39 void setBezierCurve(std::complex<T> a,std::complex<T> b,std::complex<T> c,std::complex<T> d);
alexpirciu 1:ceee5a608e7c 40 /* Get value */
alexpirciu 1:ceee5a608e7c 41 std::complex<T> getValue(float input_value);
alexpirciu 1:ceee5a608e7c 42 /* First order derivate value */
alexpirciu 1:ceee5a608e7c 43 std::complex<T> get_FO_DerivateValue(float input_value);
alexpirciu 1:ceee5a608e7c 44 /* Second order derivate value */
alexpirciu 1:ceee5a608e7c 45 std::complex<T> get_SO_DerivateValue(float input_value);
alexpirciu 1:ceee5a608e7c 46
alexpirciu 1:ceee5a608e7c 47 math::PolynomialFunction<std::complex<T>,BEZIER_ORDER > getBezierCurve();
alexpirciu 1:ceee5a608e7c 48 math::PolynomialFunction<std::complex<T>,BEZIER_ORDER-1> getFODerivate();
alexpirciu 1:ceee5a608e7c 49 math::PolynomialFunction<std::complex<T>,BEZIER_ORDER-2> getSODerivate();
alexpirciu 1:ceee5a608e7c 50
alexpirciu 1:ceee5a608e7c 51 protected:
alexpirciu 1:ceee5a608e7c 52
alexpirciu 1:ceee5a608e7c 53 private:
alexpirciu 1:ceee5a608e7c 54 // PRIVATE FUNCTIONS
alexpirciu 1:ceee5a608e7c 55 // Convert the complex points to polynomial function
alexpirciu 1:ceee5a608e7c 56 math::PolynomialFunction<std::complex<float>,BEZIER_ORDER> CP2PF();
alexpirciu 1:ceee5a608e7c 57
alexpirciu 1:ceee5a608e7c 58 // PRIVATE PARAMETERS
alexpirciu 1:ceee5a608e7c 59 std::complex<T> points[BEZIER_ORDER+1];
alexpirciu 1:ceee5a608e7c 60 math::PolynomialFunction<std::complex<T>,BEZIER_ORDER> bezierCurve;
alexpirciu 1:ceee5a608e7c 61 math::PolynomialFunction<std::complex<T>,BEZIER_ORDER-1> FOder_bezierCurve;
alexpirciu 1:ceee5a608e7c 62 math::PolynomialFunction<std::complex<T>,BEZIER_ORDER-2> SOder_bezierCurve;
alexpirciu 1:ceee5a608e7c 63 };
alexpirciu 1:ceee5a608e7c 64 };//namespace math
alexpirciu 1:ceee5a608e7c 65 #include "beziercurve.inl"
alexpirciu 1:ceee5a608e7c 66
alexpirciu 1:ceee5a608e7c 67 #endif // BEZIERCURVE_HPP
alexpirciu 1:ceee5a608e7c 68