MCPcopy Create free account
hub / github.com/BIMCoderLiang/LNLib / AllBernstein

Method AllBernstein

src/LNLib/Algorithm/Polynomials.cpp:62–87  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

60}
61
62std::vector<double> Polynomials::AllBernstein(int degree, double paramT)
63{
64 VALIDATE_ARGUMENT(degree >= 0, "degree", "Degree must be greater than zero or equal to zero.");
65 VALIDATE_ARGUMENT_RANGE(paramT, 0.0, 1.0);
66
67 std::vector<double> bernsteinArray(degree + 1, 0.0);
68 bernsteinArray[0] = 1.0;
69 if (degree == 0) {
70
71 return bernsteinArray;
72 }
73
74 double t1 = 1.0 - paramT;
75 for (int j = 1; j <= degree; j++)
76 {
77 double saved = 0.0;
78 for (int k = 0; k < j; k++)
79 {
80 double temp = bernsteinArray[k];
81 bernsteinArray[k] = saved + t1 * temp;
82 saved = paramT * temp;
83 }
84 bernsteinArray[j] = saved;
85 }
86 return bernsteinArray;
87}
88
89double Polynomials::Horner(int degreeU, int degreeV, const std::vector<std::vector<double>>& coefficients, UV& uv)
90{

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected