I think it should be added that, in general, this is not necessarily possible. Not every closed triangulated surface admits a dissection into tetrahedra — the counterexamples can be simple (

https://en.wikipedia.org/wiki/Schönhardt_polyhedron ).

Deciding if a triangulation into tetrahedra exists is NP hard. So the idea of computing a triangulation (if it exists) won’t be feasible.

The way out is to allow either additional points in the interior of the shape, which would preserve the boundary mesh exactly. I believe it is not clear if this will always work. Alternatively, you may allow additional points on the piecewise linear elements of the mesh (or both). In this case at least the geometry of the boundary mesh is unchanged. This strategy is known to always work, albeit at the possible expense of many new elements (possible exponentially many, depending on what you ask for).

You could use CGAL to implement one of the strategies yourself. There are some comparably simple strategies for splitting edges that could be implemented without too much hassle, if you feel comfortably doing so. It will be difficult if you ask for quality tetrahedra or few additional vertices.

Outside CGAL there is tetgen, which specializes in this area.

-Marc

On 2. Dec 2019, at 10:09, Sebastien Loriot (GeometryFactory) <

[hidden email]> wrote:

As of CGAL 5.0, this is not possible.

Sebastien.

On 12/2/19 12:48 AM, rdzhao wrote:

Hi all,

I'm working on a project that requires 3D mesh generation procedures that

preserves exactly the input surface elements, in the sense that all the

boundary vertices, edges, and triangles are exactly the same with the input

surface.

I looked through the manual, but there are no sections discussing how to

realize this.

Anyone can help?

Thank you so much!

Rundong

--

Sent from: http://cgal-discuss.949826.n4.nabble.com/

--

You are currently subscribed to cgal-discuss.

To unsubscribe or access the archives, go to

https://sympa.inria.fr/sympa/info/cgal-discuss