Skip to Content.
Sympa Menu

cgal-discuss - [cgal-discuss] Best approach to create Mesh_Domain_3 from multiple Polyhedral_3

Subject: CGAL users discussion list

List archive

[cgal-discuss] Best approach to create Mesh_Domain_3 from multiple Polyhedral_3


Chronological Thread 
  • From: Daniel Abler <>
  • To: <>
  • Subject: [cgal-discuss] Best approach to create Mesh_Domain_3 from multiple Polyhedral_3
  • Date: Wed, 27 May 2015 17:10:13 +0200
  • Organization: University of Bern

Dear All,

I would like to create a Mesh_Domain_3, and subsequently a
Mesh_complex_3_in_triangulation_3, from multiple polyhedral surface meshes
(Polyhedral_3) so that each Polyhedral becomes one subdomain in the new
Mesh_complex_3_in_triangulation_3.
Some of the polyhedral surface meshes have common boundaries (i.e. vertices
at same coordinates), none of them intersect.

I tried two approaches, but neither of them solves my problem... Being new to
CGAL, I am somewhat overwhelmed by the library and would really appreciate
any pointer in the right direction.


My attempts so far:

1) Polyhedral_mesh_domain_3

Has an undocumented (CGAL 4.6) constructor
Polyhedral_mesh_domain_3(
InputPolyhedraPtrIterator begin,
InputPolyhedraPtrIterator end,
const Polyhedron& bounding_polyhedron,
CGAL::Random* p_rng = NULL)
that allows creation of a Polyhedral_mesh_domain_3 from an iterator over
pointers to Polyhedrons:

std::list<Polyhedron*> poly_pointer_list = [...]
Polyhedron * bounding_surface_polygon = [...]
Mesh_domain domain(poly_pointer_list.begin(),poly_pointer_list.end(),
*bounding_surface_polygon);
C3t3 c3t3 = CGAL::make_mesh_3<C3t3>(domain, criteria, no_exude(),
no_perturb());

This results in a single domain, comprising the enclosed volumes of all
Polyhedrons in poly_pointer_list. Also, an using the same approach with
Polyhedral_mesh_domain_with_features_3.h seems not to be possible.

Once the MeshDomain is created, it should be possible to tag the faces of
each sub-polyhedron with different MeshDomain_3::Surface_patch_index, as had
been suggested in a previous post:
http://cgal-discuss.949826.n4.nabble.com/3D-mesh-creation-Mesh-complex-3-in-triangulation-3-from-multiple-polyhedral-surface-meshes-Polyhedro-td4660833.html#a4660876

Would this solve the problem and is there an example available for such
construction?


2) Labeled_mesh_domain_3 with customised
Polyhedral_to_implicit_labeling_function_wrapper following discussion thread:
http://cgal-discuss.949826.n4.nabble.com/How-to-mesh-multiple-domain-multiple-Polyhedrals-td4659743.html

This makes use of CGAL/Mesh_3/polyhedral_to_labeled_function_wrapper.h for
creation of Labeled_mesh_domain_3 from Polyhedrons.
An additional wrapper allows multiple Polyhedrons (wrapped by
polyhedral_to_labeled_function_wrapper) to be passed to Labeled_mesh_domain_3.

This approach works in principle but becomes very slow for larger volumes and
multiple submeshes.
Also it seems that the meshing procedure does not terminate when the bounding
box has been chosen too small.


Many thanks in advance for any hints towards improving either of those
approaches or another alternative method for Mesh creation from multiple
polyhedrons.

daniel










  • [cgal-discuss] Best approach to create Mesh_Domain_3 from multiple Polyhedral_3, Daniel Abler, 05/27/2015

Archive powered by MHonArc 2.6.18.

Top of Page