32 #include "MeshKernel/Constants.hpp"
33 #include "MeshKernel/Entities.hpp"
34 #include "MeshKernel/LandBoundary.hpp"
35 #include "MeshKernel/Utilities/LinearAlgebra.hpp"
49 [[nodiscard]]
static std::vector<Point>
SecondOrderDerivative(
const std::vector<Point>& splines,
size_t startIndex,
size_t endIndex);
56 [[nodiscard]]
static std::vector<double>
SecondOrderDerivative(
const std::vector<double>& coordinates,
size_t startIndex,
size_t endIndex);
64 static std::tuple<Point, Point, double>
66 const std::vector<Point>& splineDerivative,
67 double adimensionalPointCoordinate,
76 static Point Evaluate(
const std::vector<Point>& coordinates,
const std::vector<Point>& secondDerivative,
const double evaluationPoint);
87 const std::vector<Point>& splineDerivative,
90 const int numberOfIterations = constants::numeric::defaultSnappingIterations);
99 static lin_alg::ColVector<double> ComputeSplineWeights(
const lin_alg::ColVector<double>& xf,
100 const lin_alg::ColVector<double>& yf,
107 static std::tuple<lin_alg::ColVector<double>, lin_alg::ColVector<double>> ComputeSamplePoints(
const std::vector<Point>& splinePoints,
108 const lin_alg::Matrix<double, Eigen::ColMajor>& aMatrix);
116 static void SampleSpline(
const std::vector<Point>& splinePoints,
117 const size_t intermediatePointCount,
118 std::vector<Point>& samplePoints);
126 static void ComputeInterpolationMatrix(
const Eigen::Index numberOfSplinePoints,
127 const Eigen::Index intervalRefinement,
128 Eigen::Index& numberOfSamplePoints,
129 lin_alg::Matrix<double, Eigen::ColMajor>& interpolationMatrix);
137 static lin_alg::Matrix<double, Eigen::ColMajor> ComputeLeastSquaresMatrixInverse(
const lin_alg::Matrix<double, Eigen::ColMajor>& splineCoefficients,
138 const lin_alg::ColVector<double>& weights);