CGAL 4.12 - Triangulated Surface Mesh Simplification
EdgeCollapseSimplificationVisitor Concept Reference

## Definition

The concept EdgeCollapseSimplificationVisitor describes the requirements for the visitor object which is used to track the edge collapse simplification algorithm.

The several callbacks given as member functions in the visitor are called from certain places in the algorithm implementation.

## Types

typedef unspecified_type ECM
The type of the surface mesh to simplify. More...

typedef unspecified_type FT
A field type representing the collapse cost.

typedef unspecified_type Profile
The type of the edge profile cache. More...

typedef unspecified_type size_type
An integer type representing the number of edges.

unspecified_type Point
The point type for the surface mesh vertex. More...

## Operations

void OnStarted (ECM &surface_mesh)
Called before the algorithm starts.

void OnFinished (ECM &surface_mesh)
Called after the algorithm finishes.

void OnStopConditionReached (ECM &surface_mesh)
Called when the StopPredicate returned true (but not if the algorithm terminates because the surface mesh could not be simplified any further).

void OnCollected (Profile const &profile, boost::optional< FT > cost)
Called during the collecting phase (when a cost is assigned to the edges), for each edge collected.

void OnSelected (Profile const &profile, boost::optional< FT > cost, size_type initial_count, size_type current_count)
Called during the processing phase (when edges are collapsed), for each edge that is selected. More...

void OnCollapsing (Profile const &profile, boost::optional< Point > placement)
Called when an edge is about to be collapsed and replaced by a vertex whose position is *placement. More...

void OnCollapsed (Profile const &, Profile::vertex_descriptor const &vd)
Called when an edge has been collapsed and replaced by the vertex vd

void OnNonCollapsable (Profile const &profile)
Called for each selected edge which cannot be collapsed because doing so would change the topological type of the surface mesh (turn it into a non-manifold for instance).

## ◆ ECM

The type of the surface mesh to simplify.

Must be a model of the EdgeCollapsableSurfaceMesh concept.

## ◆ Profile

The type of the edge profile cache.

Must be a model of the EdgeProfile concept.

## ◆ OnCollapsing()

 void EdgeCollapseSimplificationVisitor::OnCollapsing ( Profile const & profile, boost::optional< Point > placement )

Called when an edge is about to be collapsed and replaced by a vertex whose position is *placement.

If placement is absent (meaning that it could not be computed) the edge will not be collapsed.

## ◆ OnSelected()

 void EdgeCollapseSimplificationVisitor::OnSelected ( Profile const & profile, boost::optional< FT > cost, size_type initial_count, size_type current_count )

Called during the processing phase (when edges are collapsed), for each edge that is selected.

This method is called before the algorithm checks if the edge is collapsable.

cost indicates the current collapse cost for the edge. If absent (meaning that it could not be computed) the edge will not be collapsed.

initial_count and current_count refer to the number of edges.

## ◆ Point

 unspecified_type EdgeCollapseSimplificationVisitor::Point

The point type for the surface mesh vertex.

Must be a model of Point_3.