41 #ifndef GEOGRAM_DELAUNAY_CAVITY
42 #define GEOGRAM_DELAUNAY_CAVITY
57 #ifdef CAVITY_WITH_STATS
58 #define CAVITY_STATS(x) x
60 #define CAVITY_STATS(x)
83 #ifdef CAVITY_WITH_STATS
95 ::memset(h2t_, END_OF_LIST,
sizeof(h2t_));
99 #ifdef CAVITY_WITH_STATS
100 for(
index_t i=0; i<MAX_H; ++i) {
101 std::cerr << i <<
": get=" << stats_get_[i]
102 <<
" set=" << stats_set_[i] << std::endl;
143 set_vv2t(v0, v1, new_t);
144 set_vv2t(v1, v2, new_t);
145 set_vv2t(v2, v0, new_t);
152 tglobal_[new_t] = tglobal;
153 boundary_f_[new_t] = boundary_f;
196 return boundary_f_[f];
223 t0 = tglobal_[get_vv2t(v2,v1)];
224 t1 = tglobal_[get_vv2t(v0,v2)];
225 t2 = tglobal_[get_vv2t(v1,v0)];
229 static constexpr
index_t MAX_H = 1033;
231 static constexpr
index_t MAX_F = 128;
242 (
index_t(v2+1) * 83492791)) % MAX_H
259 if(h2t_[cur] == END_OF_LIST) {
268 CAVITY_STATS(++stats_set_[cnt];)
293 if((h2v_[cur][0] == v1) && (h2v_[cur][1] == v2)) {
297 CAVITY_STATS(++stats_get_[cnt];)
335 CAVITY_STATS(
mutable index_t stats_set_[MAX_H];)
336 CAVITY_STATS(
mutable index_t stats_get_[MAX_H];)
#define geo_assert_not_reached
Sets a non reachable point in the program.
#define geo_debug_assert(x)
Verifies that a condition is met.
Represents the set of tetrahedra on the boundary of the cavity in a 3D Delaunay triangulation.
Cavity()
Cavity constructor.
index_t nb_facets() const
Gets the number of facets.
Numeric::uint8 local_index_t
Type used for local indices.
bool OK() const
Tests whether this Cavity is valid.
void clear()
Clears this cavity.
signed_index_t facet_vertex(index_t f, index_t lv) const
Gets the vertex of a facet.
index_t facet_facet(index_t f) const
Gets the local tetrahedron facet that corresponds to a facet.
void set_facet_tet(index_t f, index_t t)
Sets the tetrahedron associated with a facet.
void get_facet_neighbor_tets(index_t f, index_t &t0, index_t &t1, index_t &t2) const
Gets the neighbors of a facet.
void new_facet(index_t tglobal, index_t boundary_f, signed_index_t v0, signed_index_t v1, signed_index_t v2)
Inserts a new boundary facet in the structure.
index_t facet_tet(index_t f) const
Gets the tetrahedron associated with a facet.
Common include file, providing basic definitions. Should be included before anything else by all head...
Types and functions for memory manipulation.
void clear(void *addr, size_t size)
Clears a memory block.
Global Vorpaline namespace.
geo_signed_index_t signed_index_t
The type for storing and manipulating indices differences.
geo_index_t index_t
The type for storing and manipulating indices.
Types and functions for numbers manipulation.
Functions for string manipulation.