CGAL 4.3 - Triangulated Surface Mesh Simplification
|
The concept EdgeCollapsableMesh
describes the requirements for the type of triangulated surface mesh that can be passed to the simplification algorithm.
The surface must be structurally equivalent to a polyhedral surface having only triangular faces. It can have any number of connected components, boundaries (borders and holes) and handles (arbitrary genus).
Valid Expressions
The mesh simplification algorithm requires the free function collapse_triangulation_edge()
.
Let v0
be the source and v1
be the target vertices of v0v1
.
For e
\( \in \{\) v0v1,v1v0
\( \}\), let en
and ep
be the next and previous edges, that is en = next_edge(e, mesh)
, ep = prev_edge(e,mesh)
, and let eno
and epo
be their opposite edges, that is eno = opposite_edge(en, mesh)
and epo = opposite_edge(ep,mesh)
.
Then, after the collapse of (v0v1,v1v0)
the following holds:
e
is no longer in mesh
. v0,v1
\( \}\) is no longer in mesh
while the other remains. Even though it would appear that v0 can always be the vertex being removed, there is a case when removing the edge e
requires v1
to be removed as well. See figure CollapseFigure5. Let vgone
be the removed vertex and vkept
be the remaining vertex. e
was a border edge, that is get(is_border, e, mesh) == true
, then next_edge(ep) == en
, and prev_edge(en) == ep
. e
was not a border edge, that is get(is_border, e, mesh) == false
, then ep
and epo
are no longer in mesh
while en
and eno
are kept in mesh
. ie
in in_edges(vgone,mesh)
, target(ie,mesh) == vkept
and source(opposite_edge(ie),mesh) == vkept
. mesh
. The function returns vertex vkept
(which can be either v0
or v1
).
CGAL::Polyhedron_3<Traits>
(If it has only triangular faces, and via External Adaptation, which is described in [6] and this Bgl web page: http://www.boost.org/libs/graph/doc/leda_conversion.html
).
boost::graph_traits< CGAL::Polyhedron_3<Traits> >
CGAL::halfedge_graph_traits< CGAL::Polyhedron_3<Traits> >
Related Functions | |
(Note that these are not member functions.) | |
template<class EdgeCollapsableMesh > | |
boost::graph_traits < EdgeCollapsableMesh > ::vertex_descriptor | halfedge_collapse (typename boost::graph_traits< EdgeCollapsableMesh >::edge_descriptor const &ue, EdgeCollapsableMesh &mesh) |
Collapses the undirected edge (v0v1,v1v0) replacing it with v0 or v1 , as described in the following paragraph. More... | |
|
related |
Collapses the undirected edge (v0v1,v1v0)
replacing it with v0
or v1
, as described in the following paragraph.
mesh
to be an oriented 2-manifold with or without boundaries. Furthermore, the undirected edge (v0v1,v1v0)
must satisfy the link condition [1], which guarantees that the surface is also 2-manifold after the edge collapse.