PolyFEM
Loading...
Searching...
No Matches
Refinement.hpp File Reference
#include <geogram/mesh/mesh.h>
#include <Eigen/Dense>
#include <vector>
Include dependency graph for Refinement.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  polyfem
 
namespace  polyfem::mesh
 
namespace  polyfem::mesh::Polygons
 

Typedefs

typedef std::function< void(const Eigen::MatrixXd &, Eigen::MatrixXd &, int)> polyfem::mesh::EvalParametersFunc
 
typedef std::function< std::tuple< int, int, bool >(int, int)> polyfem::mesh::GetAdjacentLocalEdge
 
typedef std::function< void(Eigen::MatrixXd &IV, Eigen::MatrixXd &OV, std::vector< std::vector< int > > &OF)> polyfem::mesh::Polygons::SplitFunction
 

Functions

void polyfem::mesh::edge_adjacency_graph (const Eigen::MatrixXi &Q, Eigen::MatrixXi &edge_index, std::vector< std::vector< int > > &adj, std::vector< std::pair< int, int > > *pairs_of_edges=nullptr, std::vector< std::pair< int, int > > *pairs_of_quads=nullptr, Eigen::MatrixXi *quad_index=nullptr)
 
bool polyfem::mesh::instantiate_pattern (const Eigen::MatrixXd &IV, const Eigen::MatrixXi &IF, const Eigen::MatrixXd &PV, const Eigen::MatrixXi &PF, Eigen::MatrixXd &OV, Eigen::MatrixXi &OF, Eigen::VectorXi *SF=nullptr, EvalParametersFunc evalFunc=nullptr, GetAdjacentLocalEdge getAdjLocalEdge=nullptr)
 
void polyfem::mesh::refine_quad_mesh (const Eigen::MatrixXd &IV, const Eigen::MatrixXi &IF, Eigen::MatrixXd &OV, Eigen::MatrixXi &OF)
 
void polyfem::mesh::Polygons::polar_split (const Eigen::MatrixXd &IV, Eigen::MatrixXd &OV, std::vector< std::vector< int > > &OF, double t=0.5)
 Split a polygon using polar refinement.
 
SplitFunction polyfem::mesh::Polygons::polar_split_func (double t)
 Helper function.
 
void polyfem::mesh::Polygons::catmul_clark_split (const Eigen::MatrixXd &IV, Eigen::MatrixXd &OV, std::vector< std::vector< int > > &OF)
 Split a polygon using polar refinement.
 
SplitFunction polyfem::mesh::Polygons::catmul_clark_split_func ()
 
void polyfem::mesh::Polygons::no_split (const Eigen::MatrixXd &IV, Eigen::MatrixXd &OV, std::vector< std::vector< int > > &OF)
 Don't split polygons.
 
SplitFunction polyfem::mesh::Polygons::no_split_func ()
 
void polyfem::mesh::refine_polygonal_mesh (const GEO::Mesh &M_in, GEO::Mesh &M_out, Polygons::SplitFunction split_func)
 Refine a polygonal mesh.
 
void polyfem::mesh::refine_triangle_mesh (const GEO::Mesh &M_in, GEO::Mesh &M_out)
 Refine a triangle mesh.
 
void polyfem::mesh::refine_polygonal_mesh (const GEO::Mesh &M_in, GEO::Mesh &M_out, bool refine_polygons=false, double t=0.5)