CGAL 5.3 - Polygon Mesh Processing
PMPCorefinementVisitor Concept Reference

Definition

The concept PMPCorefinementVisitor defines the requirements for the visitor used in corefinement-related functions to track the creation of new faces and new edges.

Refines:
CopyConstructible
Has Models:
CGAL::Polygon_mesh_processing::Corefinement::Default_visitor.

Public Types

typedef unspecified_type Triangle_mesh
 Mesh type.
 
typedef unspecified_type face_descriptor
 Face descriptor type.
 
typedef unspecified_type halfedge_descriptor
 Halfedge descriptor type.
 

Functions used by corefine() when faces are split

void before_subface_creations (face_descriptor f_split, Triangle_mesh &tm)
 called before the triangulation of f_split in tm. More...
 
void after_subface_creations (Triangle_mesh &tm)
 called when the triangulation of a face in tm is finished.
 
void before_subface_created (Triangle_mesh &tm)
 called before creating a new triangle face in tm to triangulate the face passed to before_subface_creations().
 
void after_subface_created (face_descriptor f_new, Triangle_mesh &tm)
 called after creating a new triangle face f_new in tm to triangulate the face passed to before_subface_creations(). More...
 

Functions used by corefine() when edges are split or created

void before_edge_split (halfedge_descriptor h, TriangleMesh &tm)
 called before the edge of h in tm is split. More...
 
void edge_split (halfedge_descriptor hnew, TriangleMesh &tm)
 called when a new split is done. The target of hnew is a new split vertex. There is only one call per edge.
 
void after_edge_split ()
 called when the split of the halfedge h passed at the later call to before_edge_split() is finished.
 
void add_retriangulation_edge (halfedge_descriptor h, TriangleMesh &tm)
 called when a new edge has been added to triangulate a face. More...
 

Functions used by Boolean operations functions using corefinement.

These functions are not needed if you only call corefine().

void before_face_copy (face_descriptor f_src, const Triangle_mesh &tm_src, Triangle_mesh &tm_tgt)
 called before importing the face f_src of tm_src in tm_tgt
 
void after_face_copy (face_descriptor f_src, const Triangle_mesh &tm_src, face_descriptor f_tgt, Triangle_mesh &tm_tgt)
 called after importing the face f_src of tm_src in tm_tgt. More...
 
void before_edge_copy (halfedge_descriptor h_src/, const TriangleMesh &tm_src, TriangleMesh &tm_tgt)
 called before importing the edge of h_src of tm_src in tm_tgt. There is one call per edge.
 
void after_edge_copy (halfedge_descriptor h_src, const TriangleMesh &tm_src, halfedge_descriptor h_tgt, TriangleMesh &tm_tgt)
 called after importing the edge of h_src of tm_src in tm_tgt. More...
 
void before_edge_duplicated (halfedge_descriptor h, TriangleMesh &tm)
 called before a patch boundary edge is duplicated to disconnect patches of tm (When an in-place operation and an out-of-place are both requested). More...
 
void after_edge_duplicated (halfedge_descriptor h_src, halfedge_descriptor h_new, TriangleMesh &tm)
 called when the edge of h_src has been duplicated into h_new in tm (When an in-place operation and an out-of-place are both requested). More...
 
void intersection_edge_copy (halfedge_descriptor h_src1, const TriangleMesh &tm_src1, halfedge_descriptor h_src2, const TriangleMesh &tm_src2, halfedge_descriptor h_tgt, TriangleMesh &tm_tgt)
 called when an intersection edge (represented in input meshes tm_src1 and tm_src2 by h_src1 and h_src2, respectively) is imported in tm_tgt as h_tgt. More...
 

Member Function Documentation

◆ add_retriangulation_edge()

void PMPCorefinementVisitor::add_retriangulation_edge ( halfedge_descriptor  h,
TriangleMesh &  tm 
)

called when a new edge has been added to triangulate a face.

The face triangulated is f_split in the last call to before_subface_creations(f_split, tm). There is only one call per edge.

◆ after_edge_copy()

void PMPCorefinementVisitor::after_edge_copy ( halfedge_descriptor  h_src,
const TriangleMesh &  tm_src,
halfedge_descriptor  h_tgt,
TriangleMesh &  tm_tgt 
)

called after importing the edge of h_src of tm_src in tm_tgt.

The corresponding new halfedge is h_tgt. There is only one call per edge.

◆ after_edge_duplicated()

void PMPCorefinementVisitor::after_edge_duplicated ( halfedge_descriptor  h_src,
halfedge_descriptor  h_new,
TriangleMesh &  tm 
)

called when the edge of h_src has been duplicated into h_new in tm (When an in-place operation and an out-of-place are both requested).

◆ after_face_copy()

void PMPCorefinementVisitor::after_face_copy ( face_descriptor  f_src,
const Triangle_mesh tm_src,
face_descriptor  f_tgt,
Triangle_mesh tm_tgt 
)

called after importing the face f_src of tm_src in tm_tgt.

The new face is f_tgt. Note that the call is placed just after a call to add_face() so the halfedge pointer is not set yet.

◆ after_subface_created()

void PMPCorefinementVisitor::after_subface_created ( face_descriptor  f_new,
Triangle_mesh tm 
)

called after creating a new triangle face f_new in tm to triangulate the face passed to before_subface_creations().

Note that the call is placed just after a call to add_face() so the halfedge pointer is not set yet.

◆ before_edge_duplicated()

void PMPCorefinementVisitor::before_edge_duplicated ( halfedge_descriptor  h,
TriangleMesh &  tm 
)

called before a patch boundary edge is duplicated to disconnect patches of tm (When an in-place operation and an out-of-place are both requested).

◆ before_edge_split()

void PMPCorefinementVisitor::before_edge_split ( halfedge_descriptor  h,
TriangleMesh &  tm 
)

called before the edge of h in tm is split.

Each subsequent call to edge_split() until the call to after_edge_split() will correspond to the split of that edge. If edge_split(h_i, tm) is called for i=1 to n, h_1, h_2, ... ,h_n, h is the sequence of halfedges representing the edge split (with the same initial orientation). There is only one call per edge.

◆ before_subface_creations()

void PMPCorefinementVisitor::before_subface_creations ( face_descriptor  f_split,
Triangle_mesh tm 
)

called before the triangulation of f_split in tm.

Note that f_split will be one of the faces of the triangulation. Each subsequent call to before_subface_created()/after_subface_created() will correspond to the creation of a new face of the triangulation of f_split.

◆ intersection_edge_copy()

void PMPCorefinementVisitor::intersection_edge_copy ( halfedge_descriptor  h_src1,
const TriangleMesh &  tm_src1,
halfedge_descriptor  h_src2,
const TriangleMesh &  tm_src2,
halfedge_descriptor  h_tgt,
TriangleMesh &  tm_tgt 
)

called when an intersection edge (represented in input meshes tm_src1 and tm_src2 by h_src1 and h_src2, respectively) is imported in tm_tgt as h_tgt.

There is only one call per edge. (Called only when an out-of-place operation is requested)