Alex Pirciu
/
BFMC
a
include/BezierCurve/polynomialfunction.hpp@1:ceee5a608e7c, 2019-03-28 (annotated)
- Committer:
- alexpirciu
- Date:
- Thu Mar 28 07:44:42 2019 +0000
- Revision:
- 1:ceee5a608e7c
assa
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
alexpirciu | 1:ceee5a608e7c | 1 | /** |
alexpirciu | 1:ceee5a608e7c | 2 | ****************************************************************************** |
alexpirciu | 1:ceee5a608e7c | 3 | * @file PolynomialFunction.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 Plynomial Function |
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 POLYNOMIALFUNCTION_HPP |
alexpirciu | 1:ceee5a608e7c | 14 | #define POLYNOMIALFUNCTION_HPP |
alexpirciu | 1:ceee5a608e7c | 15 | |
alexpirciu | 1:ceee5a608e7c | 16 | #include <stdint.h> |
alexpirciu | 1:ceee5a608e7c | 17 | #include <math.h> |
alexpirciu | 1:ceee5a608e7c | 18 | #include <iostream> |
alexpirciu | 1:ceee5a608e7c | 19 | |
alexpirciu | 1:ceee5a608e7c | 20 | |
alexpirciu | 1:ceee5a608e7c | 21 | namespace math{ |
alexpirciu | 1:ceee5a608e7c | 22 | /** |
alexpirciu | 1:ceee5a608e7c | 23 | * @brief It represents a one dimensional polynomial function |
alexpirciu | 1:ceee5a608e7c | 24 | * |
alexpirciu | 1:ceee5a608e7c | 25 | * @tparam T The type of the Polynomial function |
alexpirciu | 1:ceee5a608e7c | 26 | * @tparam N The degree of the polynom. |
alexpirciu | 1:ceee5a608e7c | 27 | */ |
alexpirciu | 1:ceee5a608e7c | 28 | template <class T,int32_t N> |
alexpirciu | 1:ceee5a608e7c | 29 | class PolynomialFunction |
alexpirciu | 1:ceee5a608e7c | 30 | { |
alexpirciu | 1:ceee5a608e7c | 31 | public: |
alexpirciu | 1:ceee5a608e7c | 32 | /* Constructors */ |
alexpirciu | 1:ceee5a608e7c | 33 | PolynomialFunction(); |
alexpirciu | 1:ceee5a608e7c | 34 | PolynomialFunction(T coefficients[N+1]); |
alexpirciu | 1:ceee5a608e7c | 35 | /* Destructors */ |
alexpirciu | 1:ceee5a608e7c | 36 | virtual ~PolynomialFunction(); |
alexpirciu | 1:ceee5a608e7c | 37 | |
alexpirciu | 1:ceee5a608e7c | 38 | // template<int32_t N2> void add(PolynomialFunction<T,N2> poli); |
alexpirciu | 1:ceee5a608e7c | 39 | /* Add */ |
alexpirciu | 1:ceee5a608e7c | 40 | template<int32_t N2> math::PolynomialFunction<T,(N2<N?N:N2)> add(PolynomialFunction<T,N2> b); |
alexpirciu | 1:ceee5a608e7c | 41 | /* Multiply */ |
alexpirciu | 1:ceee5a608e7c | 42 | template<int32_t N2> math::PolynomialFunction<T,(N2+N)> multip(PolynomialFunction<T,N2> b); |
alexpirciu | 1:ceee5a608e7c | 43 | /* Calculate value */ |
alexpirciu | 1:ceee5a608e7c | 44 | T calculateValue(T input_value); |
alexpirciu | 1:ceee5a608e7c | 45 | /* First order derivate */ |
alexpirciu | 1:ceee5a608e7c | 46 | math::PolynomialFunction<T,N-1> derivateFO(); |
alexpirciu | 1:ceee5a608e7c | 47 | /* Get degree */ |
alexpirciu | 1:ceee5a608e7c | 48 | int32_t getDegree(); |
alexpirciu | 1:ceee5a608e7c | 49 | /* Get coefficient value */ |
alexpirciu | 1:ceee5a608e7c | 50 | T getCoefficientValue(int32_t index); |
alexpirciu | 1:ceee5a608e7c | 51 | /* Set coefficient value */ |
alexpirciu | 1:ceee5a608e7c | 52 | void setCoefficientValue(int32_t index,T value ); |
alexpirciu | 1:ceee5a608e7c | 53 | private: |
alexpirciu | 1:ceee5a608e7c | 54 | /* Coefficients array */ |
alexpirciu | 1:ceee5a608e7c | 55 | /** |
alexpirciu | 1:ceee5a608e7c | 56 | * @brief The list of the coeffients. |
alexpirciu | 1:ceee5a608e7c | 57 | * |
alexpirciu | 1:ceee5a608e7c | 58 | */ |
alexpirciu | 1:ceee5a608e7c | 59 | T coefficients[N+1]; |
alexpirciu | 1:ceee5a608e7c | 60 | }; |
alexpirciu | 1:ceee5a608e7c | 61 | |
alexpirciu | 1:ceee5a608e7c | 62 | }; // namepace math |
alexpirciu | 1:ceee5a608e7c | 63 | |
alexpirciu | 1:ceee5a608e7c | 64 | #include "polynomialfunction.inl" |
alexpirciu | 1:ceee5a608e7c | 65 | |
alexpirciu | 1:ceee5a608e7c | 66 | #endif // POLYNOMIALFUNCTION_HPP |
alexpirciu | 1:ceee5a608e7c | 67 |