Graphite
Version 3
An experimental 3D geometry processing program
|
Adapter class used internally to implement for_each_volumetric_integration_simplex() More...
#include <geogram/voronoi/generic_RVD.h>
Public Member Functions | |
VolumetricIntegrationSimplexAction (const ACTION &do_it, bool visit_inner_tets=false, bool coherent_triangles=false) | |
Creates a new VolumetricIntegrationSimplexAction that wraps a user ACTION instance. More... | |
void | operator() (index_t v, index_t t, const Polyhedron &C) const |
Callback called for each polyhedron. More... | |
void | move_to_first_corner_of_facet (const Polyhedron &C, Polyhedron::Corner &c, index_t center_vertex_id) const |
Finds the first corner of a facet in a Polyhedron. More... | |
Static Public Member Functions | |
static bool | symbolic_compare (const Vertex &p1, const Vertex &p2, index_t center_vertex_id) |
Compares the symbolic information of two vertices in such a way that a global order is defined. More... | |
Protected Attributes | |
const ACTION & | do_it_ |
bool | visit_inner_tets_ |
bool | coherent_triangles_ |
Adapter class used internally to implement for_each_volumetric_integration_simplex()
Overrides constness checks, to allow using temporaries as argument of for_each_xxx().
ACTION | the user action class. It needs to implement: operator()(index_t v, signed_index_t v_adj, index_t t, signed_index_t t_adj, const Vertex& v1, const Vertex& v2, const Vertex& v3 ) where the parameters are as follows:
|
Definition at line 689 of file generic_RVD.h.
|
inline |
Creates a new VolumetricIntegrationSimplexAction that wraps a user ACTION instance.
[in] | do_it | the user ACTION instance |
[in] | visit_inner_tets | if set, all the tetrahedron-cell intersections are visited, else only tetrahedra on the border of the restricted Voronoi cell are visited. Since all the visited triangles are connected to the current Voronoi seed by a tetrahedron, the computed volume is the same in both cases. |
[in] | coherent_triangles | if set, this ensures that the polygonal facets of the cells are always triangulated in a coherent manner when seen from two different cells. For instance, it is required if a tetrahedral mesh is reconstructed. |
Definition at line 707 of file generic_RVD.h.
|
inline |
Finds the first corner of a facet in a Polyhedron.
This function is used to ensure that a facet is triangulated coherently when seen from two different volumetric cells, by generating a fan of triangles that radiates from the first corner. The global order used to find the first corner is defined by the function symbolic_compare().
[in] | C | the Polyhedron |
[in,out] | c | a corner of the facet, replaced by the first corner of the facet on exit. |
[in] | center_vertex_id | index of the current Voronoi seed (needed to determine the full symbolic information in the vertices). |
Definition at line 808 of file generic_RVD.h.
|
inline |
Callback called for each polyhedron.
Routes the callback to the wrapped user action class.
[in] | v | index of current Delaunay seed |
[in] | t | index of current mesh tetrahedron |
[in] | C | intersection between current mesh tetrahedron and the Voronoi cell of v |
Definition at line 726 of file generic_RVD.h.
|
inlinestatic |
Compares the symbolic information of two vertices in such a way that a global order is defined.
This function is used to ensure that a facet is triangulated coherently when seen from two different volumetric cells (it uniquely determines the "first" vertex).
[in] | p1 | first vertex to compare |
[in] | p2 | second vertex to compare |
[in] | center_vertex_id | index of the current Voronoi seed (needed to determine the full symbolic information in p1 and p2 ). |
Definition at line 840 of file generic_RVD.h.