| 20 | using namespace LNLib; |
| 21 | |
| 22 | double Polynomials::Horner(int degree, const std::vector<double>& coefficients, double paramT) |
| 23 | { |
| 24 | VALIDATE_ARGUMENT(degree > 0, "degree", "Degree must be greater than zero."); |
| 25 | VALIDATE_ARGUMENT(ValidationUtils::IsValidBezier(degree, coefficients.size()), "degree", "Coefficients size equal degree plus one."); |
| 26 | double result = coefficients[degree]; |
| 27 | for (int i = degree - 1; i >= 0; i--) |
| 28 | { |
| 29 | result = result * paramT + coefficients[i]; |
| 30 | } |
| 31 | return result; |
| 32 | } |
| 33 | |
| 34 | double Polynomials::Bernstein(int index, int degree, double paramT) |
| 35 | { |