This commit is contained in:
Jane Tournois 2025-03-25 11:17:38 +01:00
parent 76662f75eb
commit 4ebd95c86a
3 changed files with 27 additions and 14 deletions

View File

@ -677,9 +677,10 @@ View of 3D meshes produced from a polyhedral domain with a nested surface.
\subsubsection Mesh_3RemeshingPolyhedralSurface Remeshing a Polyhedral Surface
The following code creates a polyhedral domain, with only one polyhedron,
and no "bounding polyhedron". Since the volumetric part of the domain may be empty,
and should not be meshed,
it is necessary to use the `CGAL::parameters::surface_only()` parameter to mesh the surface only.
and no "bounding polyhedron". The volumetric part of the domain may be empty
and should not be meshed.
In this case, it is recommended to use the `CGAL::parameters::surface_only()` parameter
to speedup the meshing of the surface only.
This enables to remesh a surface, and is equivalent to the function `make_surface_mesh()`.
\cgalExample{Mesh_3/remesh_polyhedral_surface.cpp}

View File

@ -121,6 +121,10 @@ several other components (closed or not)
that will be represented in the final mesh.
This class is a model of the concept `MeshDomain_3`.
\note When the given surface(s) are not closed, the surface only will be meshed.
It is then recommended to use the parameter `parameters::surface_only()` to speedup
the meshing process.
\tparam Polyhedron stands for the type of the input polyhedral surface(s),
model of `FaceListGraph`.
@ -239,11 +243,11 @@ public:
/// @{
/*!
Construction from a polyhedral surface which must and free of intersections.
If `polyhedron` is closed, the inside of `bounding_polyhedron` will be meshed,
Construction from a polyhedral surface which must be free of intersections.
If `polyhedron` is closed, its inside will be meshed,
otherwise there will be no interior and only the surface will be meshed.
*/
Polyhedral_mesh_domain_3(const Polyhedron& bounding_polyhedron
Polyhedral_mesh_domain_3(const Polyhedron& polyhedron
#ifndef DOXYGEN_RUNNING
, CGAL::Random* p_rng = nullptr
#endif
@ -252,14 +256,14 @@ public:
, bounding_tree_(&tree_) // the bounding tree is tree_
, p_rng_(p_rng)
{
this->add_primitives(bounding_polyhedron);
if(! is_triangle_mesh(bounding_polyhedron)) {
this->add_primitives(polyhedron);
if(!is_triangle_mesh(polyhedron)) {
std::cerr << "Your input polyhedron must be triangulated!\n";
CGAL_error_msg("Your input polyhedron must be triangulated!");
}
this->build();
if(!is_closed(bounding_polyhedron))
if(!is_closed(polyhedron))
set_surface_only();
}

View File

@ -72,6 +72,10 @@ It is a model of the concept `MeshDomainWithFeatures_3`. It also provides
a member function to automatically detect sharp features and boundaries from
the input polyhedral surface(s).
\note When the given surface(s) are not closed, the surface only will be meshed.
It is then recommended to use the parameter `parameters::surface_only()` to speedup
the meshing process.
\tparam IGT stands for a geometric traits class providing the types
and functors required to implement the intersection tests and intersection computations
for polyhedral boundary surfaces. This parameter has to be
@ -162,11 +166,12 @@ public:
/*!
Constructor from a polyhedral surface.
No feature detection is done at this level. Note that a copy of `bounding_polyhedron` will be done.
The polyhedron `bounding_polyhedron` has to be closed and free of intersections.
The interior of `bounding_polyhedron` will be meshed.
No feature detection is done at this level. Note that a copy of `polyhedron` will be done.
The polyhedron `polyhedron` must be free of intersections.
If `polyhedron` is closed, its inside will be meshed,
otherwise there will be no interior and only the surface will be meshed.
*/
Polyhedral_mesh_domain_with_features_3(const Polyhedron& bounding_polyhedron
Polyhedral_mesh_domain_with_features_3(const Polyhedron& polyhedron
#ifndef DOXYGEN_RUNNING
, CGAL::Random* p_rng = nullptr
#endif
@ -174,10 +179,13 @@ public:
: Base(p_rng) , borders_detected_(false)
{
stored_polyhedra.resize(1);
stored_polyhedra[0] = bounding_polyhedron;
stored_polyhedra[0] = polyhedron;
get(face_patch_id_t<Patch_id>(), stored_polyhedra[0]);
this->add_primitives(stored_polyhedra[0]);
this->build();
if(!is_closed(polyhedron))
set_surface_only();
}
#ifndef CGAL_NO_DEPRECATED_CODE