11#ifndef BEMBEL_SRC_SPLINE_KNOTS_HPP_
12#define BEMBEL_SRC_SPLINE_KNOTS_HPP_
22 int polynomial_degree)
noexcept {
23 std::vector<double>
out;
24 out.reserve(polynomial_degree * 2);
25 for (
int i = 0;
i < polynomial_degree;
i++)
out.push_back(0);
26 for (
int i = 0;
i < polynomial_degree;
i++)
out.push_back(1);
30inline int GetPolynomialDegreeFromKnotVector(
32 constexpr double tol = .0000001;
43inline std::vector<double> MakeUniformKnotVector(
int polynomial_degree,
46 std::vector<double>
out;
48 out.reserve(polynomial_degree * 2);
49 for (
int i = 0;
i < polynomial_degree;
i++)
out.push_back(0);
52 for (
int i = 0;
i < polynomial_degree;
i++)
out.push_back(1);
56inline std::vector<double> MakeUniformKnotVector(
int p,
int lvl) {
57 return MakeUniformKnotVector(
p,
lvl, 1);
62inline std::vector<double> ExtractUniqueKnotVector(
63 const std::vector<double> &
in) {
64 constexpr double tol = Bembel::Constants::generic_tolerance;
65 std::vector<double>
out;
66 const int size =
in.size();
69 for (
int i = 1;
i <
size;
i++) {
76inline int FindLocationInKnotVector(
const double &
x,
77 const std::vector<double> &
v) {
78 constexpr double tol = Bembel::Constants::generic_tolerance;
80 if (((
x -
tol) < 0.) && ((
x +
tol) > 0.))
return 0;
81 for (
int i = 0;
i <
size - 1;
i++) {
82 if (
v[
i] <=
x &&
v[
i + 1] >
x)
return i;
std::vector< double > MakeBezierKnotVector(int polynomial_degree) noexcept
Here, routines for the creation and processing of knot vectors are defined.
Routines for the evalutation of pointwise errors.
constexpr int getFunctionSpaceOutputDimension()