creates a polygon soup that discretizes an isosurface using the Dual Contouring algorithm.
The point placement strategy within each cell of the space partition is based on Quadric Error Metrics ("QEM", or "QEF" in Dual Contouring-related works).
the domain providing the spatial partition and the values and gradient data
isovalue
the value defining the isosurface
points
the points of the polygons in the output polygon soup
polygons
the faces of the output polygon soup. Each element in the vector describes a polygon (either quads or triangles, see the named parameter do_not_triangulate_faces) using the indices of the points in points.
whether to constrain the vertex location to the geometrical space of its cell
Type: Boolean
Default: false
Extra: Constraining the vertex to its dual cell guarantees that the resulting surface is without self-intersections (non-manifoldness aside). Oppositely, an unconstrained positioning strategy might produce better looking surfaces near sharp features (ridges, corners), at the cost of possible self-intersections.
If true, the output will contain quadrilaterals. If false, the output will contain triangles.
Type: Boolean
Default: false (faces are triangulated)
Extra: Triangulating faces is done by inserting the intersection between an edge and the isosurface, and linking it to the dual points of the cells incident to the edge. If constrain_to_cell is set to false, triangulation faces can result in additional self-intersections. An alternative that has worse approximation but is less likely to produce self-intersections is to use the function CGAL::Polygon_mesh_processing::triangulate_faces().