[Sketcher] [planegcs] Calculate value at general b-spline

This commit is contained in:
Ajinkya Dahale
2022-10-11 23:44:27 +05:30
committed by Chris Hennes
parent d68ac06b01
commit 076232a67a
2 changed files with 21 additions and 0 deletions

View File

@@ -746,6 +746,20 @@ double BSpline::getLinCombFactor(double x, size_t k, size_t i, size_t p)
return d[p];
}
double BSpline::splineValue(double x, size_t k, size_t p, VEC_D& d, const VEC_D& flatknots)
{
for (size_t r = 1; r < p + 1; ++r) {
for (size_t j = p; j > r - 1; --j) {
double alpha =
(x - flatknots[j + k - p]) /
(flatknots[j + 1 + k - r] - flatknots[j + k - p]);
d[j] = (1.0 - alpha) * d[j-1] + alpha * d[j];
}
}
return d[p];
}
void BSpline::setupFlattenedKnots()
{
flattenedknots.clear();