34#ifndef _NL_FITTING_MODEL_H_
35#define _NL_FITTING_MODEL_H_
49namespace Geom {
namespace NL {
91template<
typename ParameterType,
typename ValueType,
typename InstanceType >
119template<
typename ParameterType,
typename ValueType,
typename InstanceType >
149template<
typename InstanceType >
163 for (
size_t i = 1; i < coeff.
size(); ++i)
165 x_i *= sample_parameter;
194 for (
size_t i = 0; i < raw_data.
size(); ++i)
196 poly[i] = raw_data[i];
205template<
typename InstanceType >
219 double sample_parameter )
const
221 m_model.feed(coeff, sample_parameter);
222 known_term = coeff[
m_model.size()-1] * sample_parameter;
262template<
typename InstanceType >
269 coeff[0] = p[
X] * p[
Y];
270 coeff[1] = p[
Y] * p[
Y];
274 fixed_term = p[
X] * p[
X];
290 c.set(1, coeff[0], coeff[1], coeff[2], coeff[3], coeff[4]);
301 e.
setCoefficients(1, coeff[0], coeff[1], coeff[2], coeff[3], coeff[4]);
309template<
typename InstanceType >
319 fixed_term = p[
X] * p[
X] + p[
Y] * p[
Y];
336 c.setCoefficients(1, coeff[0], coeff[1], coeff[2]);
359 for (
size_t i = 2; i <
size(); i+=2)
376 for (
unsigned int i = 0, k = 0; i < raw_data.
size(); i+=2, ++k)
378 sb[k][0] = raw_data[i];
379 sb[k][1] = raw_data[i+1];
435 for (
size_t i = 0; i <
size(); ++i)
437 coeff[i] = s *
m_bc[i];
442 for (
size_t i =
size()-1; i > 0; --i)
457 assert(b.
size() == raw_data.
size());
458 for (
unsigned int i = 0; i < raw_data.
size(); ++i)
472template <
unsigned degree>
Various utility functions.
Bernstein-Bezier polynomial.
Bezier curve with compile-time specified order.
Polynomial in Bernstein-Bezier basis.
Set of all points at a fixed distance from the center.
Adaptor that creates 2D functions from 1D ones.
Set of points with a constant sum of distances from two foci.
void setCoefficients(double A, double B, double C, double D, double E, double F)
Set an ellipse by solving its implicit equation.
void feed(VectorView &coeff, double t) const
void instance(BezierCurveN< degree > &bc, ConstMatrixView const &raw_data) const
void feed(VectorView &coeff, double t) const
std::vector< size_t > m_bc
void instance(Bezier &b, ConstVectorView const &raw_data) const
void feed(VectorView &coeff, double &fixed_term, Point const &p) const
void instance(Circle &c, ConstVectorView const &coeff) const
void feed(VectorView &coeff, double &fixed_term, Point const &p) const
void instance(xAx &c, ConstVectorView const &coeff) const
void instance(D2< SBasis > &d2sb, ConstMatrixView const &raw_data) const
LFMD2SBasis(size_t _order)
void feed(VectorView &coeff, double t) const
void instance(Ellipse &e, ConstVectorView const &coeff) const
LFMNormalizedPowerBasis(size_t _degree)
LFMPowerBasis< InstanceType > m_model
void feed(VectorView &coeff, double &known_term, double sample_parameter) const
void instance(Poly &poly, ConstVectorView const &raw_data) const
void feed(VectorView &coeff, double sample_parameter) const
LFMPowerBasis(size_t degree)
void instance(SBasis &sb, ConstVectorView const &raw_data) const
void feed(VectorView &coeff, double t) const
static const bool WITH_FIXED_TERMS
InstanceType instance_type
ParameterType parameter_type
static const bool WITH_FIXED_TERMS
InstanceType instance_type
ParameterType parameter_type
ConstVectorView column_const_view(size_t i) const
Two-dimensional point that doubles as a vector.
Polynomial in canonical (monomial) basis.
Polynomial in symmetric power basis.
Lifts one dimensional objects into 2D.
Various utility functions.
void binomial_coefficients(std::vector< size_t > &bc, std::size_t n)
Polynomial in canonical (monomial) basis.
Polynomial in symmetric power basis (S-basis)