10 class BSplineParametrization2D;
11 class BSplineParametrization3D;
19 BSplineParametrization1DTo2D(
const Eigen::MatrixXd &initial_control_points,
const Eigen::VectorXd &knots,
const int num_vertices,
const bool exclude_ends =
true)
23 Eigen::VectorXd
inverse_eval(
const Eigen::VectorXd &
y)
override;
24 inline int size(
const int x_size)
const override
28 Eigen::VectorXd
eval(
const Eigen::VectorXd &
x)
const override;
29 Eigen::VectorXd
apply_jacobian(
const Eigen::VectorXd &grad_full,
const Eigen::VectorXd &
x)
const override;
39 std::shared_ptr<BSplineParametrization2D>
spline_;
50 Eigen::VectorXd
inverse_eval(
const Eigen::VectorXd &
y)
override;
51 int size(
const int x_size)
const override {
return 3 *
u_.size() *
v_.size(); }
52 Eigen::VectorXd
eval(
const Eigen::VectorXd &
x)
const override;
53 Eigen::VectorXd
apply_jacobian(
const Eigen::VectorXd &grad_full,
const Eigen::VectorXd &
x)
const override;
60 std::shared_ptr<BSplineParametrization3D>
spline_;
77 Eigen::VectorXd
inverse_eval(
const Eigen::VectorXd &
y)
override;
79 Eigen::VectorXd
eval(
const Eigen::VectorXd &
x)
const override;
80 Eigen::VectorXd
apply_jacobian(
const Eigen::VectorXd &grad_full,
const Eigen::VectorXd &
x)
const override;
87 int optimal_new_control_point_idx(
const Eigen::MatrixXd &
V,
const Eigen::MatrixXi &
F,
const Eigen::VectorXi &boundary_loop,
const std::vector<int> &existing_points)
const;
main class that contains the polyfem solver and all its state
bool invoked_inverse_eval_
const Eigen::VectorXd knots_
Eigen::VectorXd apply_jacobian(const Eigen::VectorXd &grad_full, const Eigen::VectorXd &x) const override
std::shared_ptr< BSplineParametrization2D > spline_
int size(const int x_size) const override
Eigen::VectorXd eval(const Eigen::VectorXd &x) const override
Eigen::VectorXd inverse_eval(const Eigen::VectorXd &y) override
const Eigen::MatrixXd initial_control_points_
BSplineParametrization1DTo2D(const Eigen::MatrixXd &initial_control_points, const Eigen::VectorXd &knots, const int num_vertices, const bool exclude_ends=true)
Eigen::VectorXd apply_jacobian(const Eigen::VectorXd &grad_full, const Eigen::VectorXd &x) const override
const Eigen::VectorXd knots_u_
BSplineParametrization2DTo3D(const Eigen::MatrixXd &initial_control_point_grid, const Eigen::VectorXd &knots_u, const Eigen::VectorXd &knots_v, const bool exclude_ends=true)
Eigen::VectorXd inverse_eval(const Eigen::VectorXd &y) override
Eigen::VectorXd eval(const Eigen::VectorXd &x) const override
const Eigen::MatrixXd initial_control_point_grid_
std::shared_ptr< BSplineParametrization3D > spline_
int size(const int x_size) const override
const Eigen::VectorXd knots_v_
bool invoked_inverse_eval_
Eigen::MatrixXi F_surface_
Eigen::VectorXd eval(const Eigen::VectorXd &x) const override
Eigen::MatrixXd boundary_bbw_weights_
const int num_control_vertices_
Eigen::VectorXd apply_jacobian(const Eigen::VectorXd &grad_full, const Eigen::VectorXd &x) const override
Eigen::MatrixXd control_points_
Eigen::MatrixXd V_surface_
Eigen::VectorXd inverse_eval(const Eigen::VectorXd &y) override
void compute_faces_for_partial_vertices(const Eigen::MatrixXd &V, Eigen::MatrixXi &F) const
const bool allow_rotations_
Eigen::MatrixXd get_bbw_weights()
Eigen::MatrixXd bbw_weights_
bool invoked_inverse_eval_
int size(const int x_size) const override
BoundedBiharmonicWeights2Dto3D(const int num_control_vertices, const int num_vertices, const Eigen::MatrixXd &V_surface, const Eigen::MatrixXi &F_surface)
int optimal_new_control_point_idx(const Eigen::MatrixXd &V, const Eigen::MatrixXi &F, const Eigen::VectorXi &boundary_loop, const std::vector< int > &existing_points) const
This parameterize a function f : x -> y and provides the chain rule with respect to previous gradient...