update user and reference manual

This commit is contained in:
Sébastien Loriot 2017-07-11 16:28:41 +02:00
parent 2feff1c01a
commit 47b4a3941b
5 changed files with 34 additions and 14 deletions

View File

@ -131,12 +131,15 @@ and provides a list of the parameters that are used in this package.
- \link keep_connected_components_grp `CGAL::Polygon_mesh_processing::keep_connected_components()` \endlink
- \link keep_connected_components_grp `CGAL::Polygon_mesh_processing::remove_connected_components()` \endlink
## Corefinement and Boolean Operation Functions ##
## Autorefinement, Corefinement, and Boolean Operation Functions ##
- `CGAL::Polygon_mesh_processing::autorefine()`
- `CGAL::Polygon_mesh_processing::autorefine_and_remove_self_intersections()`
- `CGAL::Polygon_mesh_processing::corefine_and_compute_union()`
- `CGAL::Polygon_mesh_processing::corefine_and_compute_difference()`
- `CGAL::Polygon_mesh_processing::corefine_and_compute_intersection()`
- `CGAL::Polygon_mesh_processing::corefine()`
- `CGAL::Polygon_mesh_processing::surface_intersection()`
- `CGAL::Polygon_mesh_processing::surface_self_intersection()`
- `CGAL::Polygon_mesh_processing::does_bound_a_volume()`
## Geometric Measure Functions ##

View File

@ -156,7 +156,11 @@ Once this is done, remeshing is run on all the surface, with protection of const
<b>Corefinement</b> Given two triangulated surface meshes, the <i>corefinement</i>
operation consists in refining both meshes so that their intersection polylines
are a subset of edges in both refined meshes.
\todo more information on coplanar patches.
<b> Autorefinement</b> Given a triangulated surface mesh, the <i>autorefinement</i>
operation consists in refining the mesh by inserting the result of the intersection
of each pair of non edge-adjacent triangles into the corresponding triangle faces,
keeping the mesh triangulated.
\cgalFigureBegin{coref_fig, corefine.png}
Corefinement of two triangulated surface meshes. (Left) Input meshes; (Right)
@ -197,6 +201,19 @@ intersection of the input meshes will be marked as constrained. In addition,
if an edge that was marked as constrained is split during the corefinement,
sub-edges will be marked as constrained as well.
\subsection coref_autoref_subsec Autorefinement
The autorefinement of a triangulated surface mesh can be done using the function
`CGAL::Polygon_mesh_processing::autorefine()`. It takes as input the
triangulated surface mesh to autorefine.
If a constrained edge map is provided, edges belonging to the
self-intersection of the input mesh will be marked as constrained. In addition,
if an edge that was marked as constrained is split during the autorefinement,
sub-edges will be marked as constrained as well.
As a byproduct, the function `CGAL::Polygon_mesh_processing::autorefine_and_remove_self_intersections()`
will use the autorefinement of a triangle mesh to try to fix its self-intersections
by removing some patches bounded by self-intersection edges and by stitching
those edges.
\subsection coref_bolop_subsec Boolean Operations
\cgalFigureBegin{boolop_fig, bool_op.png}
@ -235,8 +252,8 @@ possible, the input mesh will nevertheless be corefined.
\subsection coref_valid_subsec Kernel and Validity of the Output
The corefinement operation (which is also internally used in the three
Boolean operations) will correctly change the topology of the input surface mesh
The autorefinement and corefinement operations (which is also internally used in the three
Boolean operations) will correctly change the topology of the input surface meshes
if the point type used in the point property maps of the input meshes is
from a \cgal Kernel with exact predicates. If that kernel does not
have exact constructions, the embedding of the output surface mesh might

View File

@ -24,10 +24,10 @@ int main(int argc, char* argv[])
}
input.close();
std::cout << "Test surface_autointersection\n";
std::cout << "Test surface_self_intersection\n";
std::vector< std::vector<K::Point_3> >polylines;
PMP::surface_autointersection(mesh, std::back_inserter(polylines));
PMP::surface_self_intersection(mesh, std::back_inserter(polylines));
//dump polylines
std::ofstream output("intersection_polylines.cgal");

View File

@ -672,7 +672,7 @@ corefine_and_compute_difference( TriangleMesh& tm1,
/**
* \ingroup PMP_corefinement_grp
* \link autoef_def_subsec autorefines \endlink `tm`. Refines a triangle mesh
* \link coref_def_subsec autorefines \endlink `tm`. Refines a triangle mesh
* so that no triangles intersects in their interior.
* Self-intersection edges will be marked as constrained. If an edge that was marked as
* constrained is split, its sub-edges will be marked as constrained as well.
@ -682,7 +682,7 @@ corefine_and_compute_difference( TriangleMesh& tm1,
*
* @param tm input triangulated surface mesh
* @param np optional sequence of \ref namedparameters among the ones listed below
*
* \cgalNamedParamsBegin
* \cgalParamBegin{vertex_point_map}
* the property map with the points associated to the vertices of `tm`.
@ -737,8 +737,8 @@ corefine_and_compute_difference( TriangleMesh& tm1,
/**
* \ingroup PMP_corefinement_grp
* Removes self-intersections in `tm` by \link autoref_def_subsec autorefining \endlink `tm`,
* removing extra patches, and stitching autointersection edges.
* Removes self-intersections in `tm` by \link coref_def_subsec autorefining \endlink `tm`,
* removing extra patches, and stitching self-intersection edges.
* Self-intersection edges will be marked as constrained. If an edge that was marked as
* constrained is split, its sub-edges will be marked as constrained as well.
* \return `true` if all self-intersections were fixed and `false` otherwise.
@ -758,7 +758,7 @@ corefine_and_compute_difference( TriangleMesh& tm1,
* \cgalParamBegin{edge_is_constrained_map} a property map containing the
* constrained-or-not status of each edge of `tm`
* \cgalParamEnd
* \cgalParamBegin{face_index_map} a property map containing the index of each face of `tm1` (`tm2`) \cgalParamEnd
* \cgalParamBegin{face_index_map} a property map containing the index of each face of `tm` \cgalParamEnd
* \cgalNamedParamsEnd
*
*/

View File

@ -127,7 +127,7 @@ template <class OutputIterator,
class TriangleMesh,
class NamedParameters >
OutputIterator
surface_autointersection(const TriangleMesh& tm,
surface_self_intersection(const TriangleMesh& tm,
OutputIterator polyline_output,
const NamedParameters& np)
{
@ -165,10 +165,10 @@ surface_intersection(const TriangleMesh& tm1,
template <class OutputIterator,
class TriangleMesh >
OutputIterator
surface_autointersection(const TriangleMesh& tm,
surface_self_intersection(const TriangleMesh& tm,
OutputIterator polyline_output)
{
return surface_autointersection(tm, polyline_output,
return surface_self_intersection(tm, polyline_output,
CGAL::Polygon_mesh_processing::parameters::all_default()
);
}