40 #ifndef GEOGRAM_VORONOI_RVD_CALLBACK
41 #define GEOGRAM_VORONOI_RVD_CALLBACK
132 spinlocks_ = spinlocks;
183 virtual void operator() (
238 virtual void operator() (
337 simplify_internal_tet_facets_ = x;
351 simplify_voronoi_facets_ = x;
353 set_simplify_internal_tet_facets(
true);
373 simplify_boundary_facets_ = x;
375 set_simplify_voronoi_facets(
true);
376 simplify_boundary_facets_angle_threshold_ = angle_threshold;
378 simplify_boundary_facets_angle_threshold_ = 0.0;
389 tessellate_non_convex_facets_ = x;
410 mesh_.vertices.set_dimension(dim);
479 bool simplify_internal_tet_facets_;
480 bool simplify_voronoi_facets_;
481 bool simplify_boundary_facets_;
482 double simplify_boundary_facets_angle_threshold_;
483 bool tessellate_non_convex_facets_;
486 bool facet_is_skipped_;
Generic mechanism for attributes.
Computes the intersection between a set of halfspaces.
Internal representation of polygons for GenericVoronoiDiagram.
A set of three integers that encodes the equation of a vertex in GenericVoronoiDiagram.
Constructs a polyhedral mesh from a restricted Voronoi diagram.
void end() override
Called at the end of RVD traversal.
void begin_facet(index_t facet_seed, index_t facet_tet_facet) override
Called at the beginning of each facet of each intersection polyhedron.
void end_polyhedron() override
Called at the end of each polyhedron.
BuildRVDMesh(Mesh &output_mesh)
BuildRVDMesh constructor.
void begin() override
Called at the beginning of RVD traversal.
void set_generate_ids(bool x)
Specifies whether ids should be generated.
void begin_polyhedron(index_t seed, index_t tetrahedron) override
Called at the beginning of each RVD polyhedron.
~BuildRVDMesh() override
BuildRVDMesh destructor.
void end_facet() override
Called at the end of each polyhedron facet.
void set_shrink(double x)
Defines the optional shrink factor for cells.
void vertex(const double *geometry, const GEOGen::SymbolicVertex &symb) override
Called for each vertex of the current facet.
void process_polyhedron_mesh() override
If use_mesh is set, then this function is called for each generated mesh.
An array of light-weight synchronisation primitives (spinlocks).
Baseclass for user functions called for each element (polygon or polyhedron) of a restricted Voronoi ...
index_t simplex() const
Gets the index of the simplex that corresponds to the current polygon/polyhedron.
void set_spinlocks(Process::SpinLockArray *spinlocks)
Sets the spinlocks array.
virtual ~RVDCallback()
RVDCallback destructor.
virtual void end()
Called at the end of the RVD traversal.
virtual void begin()
Called at the beginning of the RVD traversal.
index_t seed() const
Gets the index of the seed that corresponds to the current polygon/polyhedron.
RVDCallback()
RVDCallback constructor.
Baseclass for user functions called for each polygon of a surfacic restricted Voronoi diagram.
void end() override
Called at the end of the RVD traversal.
RVDPolygonCallback()
PolyhedronCallback constructor.
void begin() override
Called at the beginning of the RVD traversal.
~RVDPolygonCallback() override
PolyhedronCallback destructor.
Baseclass for user functions called for each polyhedron of a volumetric restricted Voronoi diagram.
~RVDPolyhedronCallback() override
PolyhedronCallback destructor.
virtual void vertex(const double *geometry, const GEOGen::SymbolicVertex &symb)
Called for each vertex of the current facet.
void set_simplify_boundary_facets(bool x, double angle_threshold=45.0)
Specifies whether boundary facets should be simplified.
virtual void begin_facet(index_t facet_seed, index_t facet_tet)
Called at the beginning of each facet of each intersection polyhedron.
RVDPolyhedronCallback()
PolyhedronCallback constructor.
void begin() override
Called at the beginning of the RVD traversal.
virtual void end_polyhedron()
Called at the end of each polyhedron.
void set_simplify_voronoi_facets(bool x)
Specifies whether Voronoi facets should be simplified.
void set_use_mesh(bool x)
Specifies whether a mesh should be built for each traversed polyhedron.
index_t tet() const
Gets the index of the tetrahedron that corresponds to the current polyhedron.
virtual void end_facet_internal()
Filters callbacks between operator() and client callbacks.
void set_simplify_internal_tet_facets(bool x)
Specifies whether internal tetrahedron facets should be removed.
void end() override
Called at the end of the RVD traversal.
virtual void end_polyhedron_internal()
Filters callbacks between operator() and client callbacks.
virtual void begin_facet_internal(index_t facet_seed, index_t facet_tet)
Filters callbacks between operator() and client callbacks.
virtual void begin_polyhedron_internal(index_t seed, index_t tetrahedron)
Filters callbacks between operator() and client callbacks.
index_t facet_tet() const
Gets the index of the tetrahedron adjacent to the current facet or index_t(-1) if there is no such fa...
virtual void begin_polyhedron(index_t seed, index_t tetrahedron)
Called at the beginning of each intersection polyhedron.
index_t facet_seed() const
Gets the index of the seed that defines the bisector on which the current facet lies,...
void set_dimension(index_t dim)
Sets the dimension of the internal mesh if need be.
void set_tessellate_non_convex_facets(bool x)
Specifies whether non-convex facets should be tessellated.
virtual void vertex_internal(const double *geometry, const GEOGen::SymbolicVertex &symb)
Filters callbacks between operator() and client callbacks.
virtual void process_polyhedron_mesh()
If use_mesh is set, then this function is called for each generated mesh.
virtual void end_facet()
Called at the end of each polyhedron facet.
RVDVertexMap maps symbolic vertices to unique ids.
Types and utilities for manipulating vertices in geometric and symbolic forms in restricted Voronoi d...
Common include file, providing basic definitions. Should be included before anything else by all head...
The class that represents a mesh.
Global Vorpaline namespace.
GEOGen::SymbolicVertex SymbolicVertex
Symbolic representation of a RestrictedVoronoiDiagram vertex.
geo_index_t index_t
The type for storing and manipulating indices.
Types and functions for numbers manipulation.
Functions and classes for process manipulation.