PolyFEM
Loading...
Searching...
No Matches
Singularities.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <geogram/mesh/mesh.h>
4#include <Eigen/Dense>
5#include <vector>
6
7namespace polyfem
8{
9
10 namespace mesh
11 {
12 //
13 // Compute singular vertices in a polygonal mesh.
14 //
15 // @param[in] M Input surface mesh
16 // @param[out] V List of singular vertices
17 // @param[in] regular_degree { Degree of regular vertices (3 for triangle
18 // meshes, 4 for quad mesh)
19 // @param[in] ignore_border Mark vertices on the border as well
20 //
21 void singular_vertices(const GEO::Mesh &M, Eigen::VectorXi &V, int regular_degree = 4, bool ignore_border = true);
22
23 //
24 // Compute singular edges in a polygonal mesh.
25 //
26 // @param[in] M Input surface mesh
27 // @param[in] V List of singular vertices
28 // @param[out] E List of edges connecting singular vertices
29 //
30 void singular_edges(const GEO::Mesh &M, const Eigen::VectorXi &V, Eigen::MatrixX2i &E);
31
32 //
33 // Compute singularity graph in a polygonal mesh.
34 //
35 // @param[in] M Input surface mesh
36 // @param[out] V List of singular vertices
37 // @param[out] E List of edges connecting singular vertices
38 // @param[in] regular_degree { Degree of regular vertices (3 for triangle
39 // meshes, 4 for quad mesh)
40 // @param[in] ignore_border Mark vertices on the border as well
41 //
42 void singularity_graph(const GEO::Mesh &M, Eigen::VectorXi &V, Eigen::MatrixX2i &E, int regular_degree = 4, bool ignore_border = true);
43
44 //
45 // Creates polygonal patches around singularities specified in the form of a
46 // graph.
47 //
48 // @param[in,out] M { Surface mesh to modify }
49 // @param[in] V List of singular vertices
50 // @param[in] E List of singular edges
51 // @param[in] t { Interpolation parameter to place the subdivided
52 // vertices around the singularities (between 0 and 1) }
53 //
54 void create_patch_around_singularities(GEO::Mesh &M, const Eigen::VectorXi &V, const Eigen::MatrixX2i &E, double t = 0.5);
55 } // namespace mesh
56} // namespace polyfem
int V
void create_patch_around_singularities(GEO::Mesh &M, const Eigen::VectorXi &V, const Eigen::MatrixX2i &E, double t=0.5)
void singularity_graph(const GEO::Mesh &M, Eigen::VectorXi &V, Eigen::MatrixX2i &E, int regular_degree=4, bool ignore_border=true)
void singular_edges(const GEO::Mesh &M, const Eigen::VectorXi &V, Eigen::MatrixX2i &E)
void singular_vertices(const GEO::Mesh &M, Eigen::VectorXi &V, int regular_degree=4, bool ignore_border=true)