8#include <nanospline/BSpline.h>
9#include <nanospline/BSplinePatch.h>
20 virtual void reparametrize(
const Eigen::MatrixXd &control_points, Eigen::MatrixXd &newV) = 0;
22 virtual void get_parameters(
const Eigen::MatrixXd &
V, Eigen::MatrixXd &control_points,
const bool mesh_changed) = 0;
23 virtual void derivative_wrt_params(
const Eigen::VectorXd &grad_boundary, Eigen::VectorXd &grad_control_points) = 0;
36 void reparametrize(
const Eigen::MatrixXd &control_points, Eigen::MatrixXd &newV)
override;
39 void get_parameters(
const Eigen::MatrixXd &
V, Eigen::MatrixXd &control_points,
const bool mesh_changed)
override;
41 void derivative_wrt_params(
const Eigen::VectorXd &grad_boundary, Eigen::VectorXd &grad_control_points)
override;
43 static void gradient(
const Eigen::MatrixXd &point,
const Eigen::MatrixXd &control_points,
const double t_parameter,
const double distance, Eigen::MatrixXd &grad);
44 static void eval(
const Eigen::MatrixXd &control_points,
const double t, Eigen::MatrixXd &
val);
45 static void deriv(
const Eigen::MatrixXd &control_points,
const double t, Eigen::MatrixXd &
val);
51 nanospline::BSpline<double, 2, 3>
curve;
57 BSplineParametrization3D(
const Eigen::MatrixXd &control_points,
const Eigen::MatrixXd &knots_u,
const Eigen::MatrixXd &knots_v,
const Eigen::MatrixXd &
V);
62 void get_parameters(
const Eigen::MatrixXd &
V, Eigen::MatrixXd &control_points,
const bool mesh_changed)
override;
64 void reparametrize(
const Eigen::MatrixXd &control_points, Eigen::MatrixXd &newV)
override;
66 void derivative_wrt_params(
const Eigen::VectorXd &grad_boundary, Eigen::VectorXd &grad_control_points)
override;
68 static void gradient(
const Eigen::MatrixXd &point,
const Eigen::MatrixXd &control_points,
const Eigen::MatrixXd &uv_parameter,
const double distance, Eigen::MatrixXd &grad);
69 static void eval(
const Eigen::MatrixXd &control_points,
const Eigen::MatrixXd &uv_parameter, Eigen::MatrixXd &
val);
70 static void deriv(
const Eigen::MatrixXd &control_points,
const Eigen::MatrixXd &uv_parameter, Eigen::MatrixXd &deriv_u, Eigen::MatrixXd &deriv_v);
76 nanospline::BSplinePatch<double, 3, 3, 3>
patch;
void derivative_wrt_params(const Eigen::VectorXd &grad_boundary, Eigen::VectorXd &grad_control_points) override
int vertex_size() override
void reparametrize(const Eigen::MatrixXd &control_points, Eigen::MatrixXd &newV) override
static void eval(const Eigen::MatrixXd &control_points, const double t, Eigen::MatrixXd &val)
std::vector< int > node_ids_
static void deriv(const Eigen::MatrixXd &control_points, const double t, Eigen::MatrixXd &val)
nanospline::BSpline< double, 2, 3 > curve
static void gradient(const Eigen::MatrixXd &point, const Eigen::MatrixXd &control_points, const double t_parameter, const double distance, Eigen::MatrixXd &grad)
void get_parameters(const Eigen::MatrixXd &V, Eigen::MatrixXd &control_points, const bool mesh_changed) override
std::map< int, double > node_id_to_t_
static void gradient(const Eigen::MatrixXd &point, const Eigen::MatrixXd &control_points, const Eigen::MatrixXd &uv_parameter, const double distance, Eigen::MatrixXd &grad)
static void deriv(const Eigen::MatrixXd &control_points, const Eigen::MatrixXd &uv_parameter, Eigen::MatrixXd &deriv_u, Eigen::MatrixXd &deriv_v)
std::map< int, Eigen::MatrixXd > node_id_to_param_
void get_parameters(const Eigen::MatrixXd &V, Eigen::MatrixXd &control_points, const bool mesh_changed) override
static void eval(const Eigen::MatrixXd &control_points, const Eigen::MatrixXd &uv_parameter, Eigen::MatrixXd &val)
std::vector< int > node_ids_
nanospline::BSplinePatch< double, 3, 3, 3 > patch
void derivative_wrt_params(const Eigen::VectorXd &grad_boundary, Eigen::VectorXd &grad_control_points) override
int vertex_size() override
void reparametrize(const Eigen::MatrixXd &control_points, Eigen::MatrixXd &newV) override
virtual int vertex_size()=0
virtual ~BSplineParametrization()=default
virtual void derivative_wrt_params(const Eigen::VectorXd &grad_boundary, Eigen::VectorXd &grad_control_points)=0
virtual void reparametrize(const Eigen::MatrixXd &control_points, Eigen::MatrixXd &newV)=0
BSplineParametrization(const Eigen::MatrixXd &V)
virtual void get_parameters(const Eigen::MatrixXd &V, Eigen::MatrixXd &control_points, const bool mesh_changed)=0