19 const Eigen::MatrixXd &
V,
20 const Eigen::MatrixXi &
F,
21 Eigen::MatrixXd &V_out,
22 Eigen::MatrixXi &F_out,
23 const double epsilon = 1e-5);
37 const Eigen::MatrixXd &
V,
38 const Eigen::MatrixXi &
F,
39 const std::vector<Eigen::Triplet<double>> &W,
40 Eigen::MatrixXd &V_out,
41 Eigen::MatrixXi &F_out,
42 std::vector<Eigen::Triplet<double>> &W_out,
43 const double epsilon = 1e-5);
57 const int n, Eigen::MatrixXd &
V, Eigen::MatrixXi &
F);
66 const Eigen::MatrixXd &
V,
67 const Eigen::MatrixXi &
F,
69 Eigen::MatrixXd &V_out,
70 Eigen::MatrixXi &F_out);
93 const double max_edge_len,
106 const Eigen::Vector3d &a,
107 const Eigen::Vector3d &b,
108 const Eigen::Vector3d &c,
122 const Eigen::Vector3d &a,
123 const Eigen::Vector3d &b,
124 const Eigen::Vector3d &c,
137 const Eigen::MatrixXd &
V,
138 const Eigen::MatrixXi &
F,
140 Eigen::MatrixXd &V_out,
141 Eigen::MatrixXi &F_out);
Eigen::MatrixXd refine_edge(const VectorNd &a, const VectorNd &b, const double max_edge_length)
Refine an edge (a, b) so each refined edge has length at most max_edge_length.
void irregular_triangle(const Eigen::Vector3d &a, const Eigen::Vector3d &b, const Eigen::Vector3d &c, const double max_edge_length, Eigen::MatrixXd &V, Eigen::MatrixXi &F)
Refine a triangle (a, b, c) into a well shaped triangle mesh.
void irregular_tessellation(const Eigen::MatrixXd &V, const Eigen::MatrixXi &F, const double max_edge_length, Eigen::MatrixXd &V_out, Eigen::MatrixXi &F_out)
Tessilate a triangle mesh (V, F) with well shaped triangles.
double max_edge_length(const Eigen::MatrixXd &V, const Eigen::MatrixXi &F)
Compute the maximum edge length of a triangle mesh (V, F)
void regular_grid_triangle_barycentric_coordinates(const int n, Eigen::MatrixXd &V, Eigen::MatrixXi &F)
Compute the barycentric coordinates of a regular grid of triangles.
void irregular_triangle_barycentric_coordinates(const Eigen::Vector3d &a, const Eigen::Vector3d &b, const Eigen::Vector3d &c, const double max_edge_length, Eigen::MatrixXd &UV, Eigen::MatrixXi &F)
Refine a triangle (a, b, c) into a well shaped triangle mesh.
void regular_grid_tessellation(const Eigen::MatrixXd &V, const Eigen::MatrixXi &F, const double out_max_edge_length, Eigen::MatrixXd &V_out, Eigen::MatrixXi &F_out)
Tessilate a triangle mesh (V, F) with regular grids of triangles of maximum edge length.
void refine_triangle_edges(const VectorNd &a, const VectorNd &b, const VectorNd &c, const double max_edge_len, Eigen::MatrixXd &V, Eigen::MatrixXi &E)
Refine the edges of a triangle (a, b, c) so each refined edge has length at most max_edge_length.
void stitch_mesh(const Eigen::MatrixXd &V, const Eigen::MatrixXi &F, Eigen::MatrixXd &V_out, Eigen::MatrixXi &F_out, const double epsilon)
Stitch a triangle mesh (V, F) together by removing duplicate vertices.
Eigen::Matrix< double, Eigen::Dynamic, 1, 0, 3, 1 > VectorNd