Graphite  Version 3
An experimental 3D geometry processing program
GEO::RegularWeightedDelaunay3d Class Reference

Regular Delaunay triangulation of weighted points. More...

#include <geogram/delaunay/delaunay_3d.h>

Inheritance diagram for GEO::RegularWeightedDelaunay3d:
GEO::Delaunay3d GEO::Delaunay GEO::Counted

Public Member Functions

 RegularWeightedDelaunay3d (coord_index_t dimension=4)
 Constructs a new Regular Delaunay3d triangulation. More...
 
- Public Member Functions inherited from GEO::Delaunay3d
 Delaunay3d (coord_index_t dimension=3)
 Constructs a new Delaunay3d. More...
 
void set_vertices (index_t nb_vertices, const double *vertices) override
 Sets the vertices of this Delaunay, and recomputes the cells. More...
 
index_t nearest_vertex (const double *p) const override
 Computes the nearest vertex from a query point. More...
 
- Public Member Functions inherited from GEO::Delaunay
coord_index_t dimension () const
 Gets the dimension of this Delaunay. More...
 
index_t cell_size () const
 Gets the number of vertices in each cell. More...
 
void set_reorder (bool x)
 Specifies whether vertices should be reordered. More...
 
virtual void set_BRIO_levels (const vector< index_t > &levels)
 Specifies the bounds of each level to be used when hierarchic ordering is specified from outside. More...
 
const double * vertices_ptr () const
 Gets a pointer to the array of vertices. More...
 
const double * vertex_ptr (index_t i) const
 Gets a pointer to a vertex by its global index. More...
 
index_t nb_vertices () const
 Gets the number of vertices. More...
 
virtual bool supports_constraints () const
 Tests whether constraints are supported by this Delaunay. More...
 
virtual void set_constraints (const Mesh *mesh)
 Defines the constraints. More...
 
void set_refine (bool x)
 Specifies whether the mesh should be refined. More...
 
bool get_refine () const
 Tests whether mesh refinement is selected. More...
 
void set_quality (double qual)
 Specifies the desired quality for mesh elements when refinement is enabled (. More...
 
const Meshconstraints () const
 Gets the constraints. More...
 
index_t nb_cells () const
 Gets the number of cells. More...
 
index_t nb_finite_cells () const
 Gets the number of finite cells. More...
 
const signed_index_tcell_to_v () const
 Gets a pointer to the cell-to-vertex incidence array. More...
 
const signed_index_tcell_to_cell () const
 Gets a pointer to the cell-to-cell adjacency array. More...
 
signed_index_t cell_vertex (index_t c, index_t lv) const
 Gets a vertex index by cell index and local vertex index. More...
 
signed_index_t cell_adjacent (index_t c, index_t lf) const
 Gets an adjacent cell index by cell index and local facet index. More...
 
bool cell_is_infinite (index_t c) const
 Tests whether a cell is infinite. More...
 
bool cell_is_finite (index_t c) const
 Tests whether a cell is finite. More...
 
index_t index (index_t c, signed_index_t v) const
 Retrieves a local vertex index from cell index and global vertex index. More...
 
index_t adjacent_index (index_t c1, index_t c2) const
 Retrieves a local facet index from two adacent cell global indices. More...
 
signed_index_t vertex_cell (index_t v) const
 Gets an incident cell index by a vertex index. More...
 
signed_index_t next_around_vertex (index_t c, index_t lv) const
 Traverses the list of cells incident to a vertex. More...
 
void get_neighbors (index_t v, vector< index_t > &neighbors) const
 Gets the one-ring neighbors of vertex v. More...
 
void save_histogram (std::ostream &out) const
 Saves the histogram of vertex degree (can be visualized with gnuplot). More...
 
bool stores_neighbors () const
 Tests whether neighbors are stored. More...
 
void set_stores_neighbors (bool x)
 Specifies whether neighbors should be stored. More...
 
bool stores_cicl () const
 Tests whether incident tetrahedra lists are stored. More...
 
void set_stores_cicl (bool x)
 Specifies whether incident tetrahedra lists should be stored. More...
 
bool keeps_infinite () const
 Tests whether infinite elements are kept. More...
 
void set_keeps_infinite (bool x)
 Sets whether infinite elements should be kept. More...
 
bool thread_safe () const
 Tests whether thread-safe mode is active. More...
 
void set_thread_safe (bool x)
 Specifies whether thread-safe mode should be used. More...
 
void set_default_nb_neighbors (index_t x)
 Sets the default number of stored neighbors. More...
 
index_t default_nb_neighbors () const
 Gets the default number of stored neighbors. More...
 
void clear_neighbors ()
 Frees all memory used for neighbors storage.
 
void set_keep_regions (bool x)
 Specifies whether all internal regions should be kept. More...
 
virtual index_t region (index_t t) const
 Gets the region id associated with a tetrahedron. More...
 
virtual void store_neighbors_CB (index_t i)
 Stores the neighbors of a vertex. More...
 
- Public Member Functions inherited from GEO::Counted
void ref () const
 Increments the reference count. More...
 
void unref () const
 Decrements the reference count. More...
 
bool is_shared () const
 Check if the object is shared. More...
 
int nb_refs () const
 Gets the number of references that point to this object. More...
 

Protected Member Functions

 ~RegularWeightedDelaunay3d () override
 RegularWeightedDelaunay3d destructor.
 
- Protected Member Functions inherited from GEO::Delaunay3d
bool create_first_tetrahedron (index_t &iv0, index_t &iv1, index_t &iv2, index_t &iv3)
 Finds in the pointset a set of four non-coplanar points. More...
 
index_t locate (const double *p, index_t hint=NO_TETRAHEDRON, bool thread_safe=false, Sign *orient=nullptr) const
 Finds the tetrahedron that contains a point. More...
 
index_t locate_inexact (const double *p, index_t hint, index_t max_iter) const
 Finds the tetrahedron that (approximately) contains a point using inexact predicates. More...
 
index_t insert (index_t v, index_t hint=NO_TETRAHEDRON)
 Inserts a point in the triangulation. More...
 
void find_conflict_zone (index_t v, index_t t, const Sign *orient, index_t &t_bndry, index_t &f_bndry, index_t &first, index_t &last)
 Determines the list of tetrahedra in conflict with a given point. More...
 
void find_conflict_zone_iterative (const double *p, index_t t, index_t &t_bndry, index_t &f_bndry, index_t &first, index_t &last)
 This function is used to implement find_conflict_zone. More...
 
index_t stellate_cavity (index_t v)
 Creates a star of tetrahedra filling the conflict zone. More...
 
index_t stellate_conflict_zone_iterative (index_t v, index_t t_bndry, index_t f_bndry, index_t prev_f=index_t(-1))
 Creates a star of tetrahedra filling the conflict zone. More...
 
bool get_neighbor_along_conflict_zone_border (index_t t1, index_t t1fborder, index_t t1ft2, index_t &t2, index_t &t2fborder, index_t &t2ft1) const
 Finds the neighbor of a tetrahedron on the border of the conflict zone. More...
 
index_t max_t () const
 Maximum valid index for a tetrahedron. More...
 
bool tet_is_in_list (index_t t) const
 Tests whether a tetrahedron belongs to a linked list. More...
 
index_t tet_next (index_t t) const
 Gets the index of a successor of a tetrahedron. More...
 
void add_tet_to_list (index_t t, index_t &first, index_t &last)
 Adds a tetrahedron to a linked list. More...
 
void remove_tet_from_list (index_t t)
 Removes a tetrahedron from the linked list it belongs to. More...
 
bool tet_is_finite (index_t t) const
 Tests whether a given tetrahedron is a finite one. More...
 
bool tet_is_real (index_t t) const
 Tests whether a tetrahedron is a real one. More...
 
bool tet_is_virtual (index_t t) const
 Tests whether a tetrahedron is a virtual one. More...
 
bool tet_is_free (index_t t) const
 Tests whether a tetrahedron is in the free list. More...
 
index_t new_tetrahedron ()
 Creates a new tetrahedron. More...
 
index_t new_tetrahedron (signed_index_t v1, signed_index_t v2, signed_index_t v3, signed_index_t v4)
 Creates a new tetrahedron. More...
 
void set_tet_mark_stamp (index_t stamp)
 Generates a unique stamp for marking tets. More...
 
bool tet_is_marked (index_t t) const
 Tests whether a tetrahedron is marked. More...
 
void mark_tet (index_t t)
 Marks a tetrahedron. More...
 
signed_index_t tet_vertex (index_t t, index_t lv) const
 Gets the index of a vertex of a tetrahedron. More...
 
index_t find_tet_vertex (index_t t, signed_index_t v) const
 Finds the index of the vertex in a tetrahedron. More...
 
index_t finite_tet_vertex (index_t t, index_t lv) const
 Gets the index of a vertex of a tetrahedron. More...
 
void set_tet_vertex (index_t t, index_t lv, signed_index_t v)
 Sets a tetrahedron-to-vertex adjacency. More...
 
signed_index_t tet_adjacent (index_t t, index_t lf) const
 Gets the index of a tetrahedron adjacent to another one. More...
 
void set_tet_adjacent (index_t t1, index_t lf1, index_t t2)
 Sets a tetrahedron-to-tetrahedron adjacency. More...
 
index_t find_tet_adjacent (index_t t1, index_t t2_in) const
 Finds the index of the facet accros which t1 is adjacent to t2_in. More...
 
void set_tet (index_t t, signed_index_t v0, signed_index_t v1, signed_index_t v2, signed_index_t v3, index_t a0, index_t a1, index_t a2, index_t a3)
 Sets the vertices and adjacent tetrahedra of a tetrahedron. More...
 
index_t get_facet_by_halfedge (index_t t, signed_index_t v1, signed_index_t v2) const
 
void get_facets_by_halfedge (index_t t, signed_index_t v1, signed_index_t v2, index_t &f12, index_t &f21) const
 
index_t next_around_halfedge (index_t &t, signed_index_t v1, signed_index_t v2) const
 Gets the next tetrahedron around an oriented edge of a tetrahedron. More...
 
bool tet_is_conflict (index_t t, const double *p) const
 Tests whether a given tetrahedron is in conflict with a given 3d point. More...
 
 ~Delaunay3d () override
 Delaunay3d destructor.
 
void show_tet (index_t t) const
 For debugging purposes, displays a tetrahedron. More...
 
void show_tet_adjacent (index_t t, index_t lf) const
 For debugging purposes, displays a tetrahedron adjacency. More...
 
void show_list (index_t first, const std::string &list_name) const
 For debugging purposes, displays a tetrahedron. More...
 
void check_combinatorics (bool verbose=false) const
 For debugging purposes, tests some combinatorial properties.
 
void check_geometry (bool verbose=false) const
 For debugging purposes, test some geometrical properties.
 
- Protected Member Functions inherited from GEO::Delaunay
 Delaunay (coord_index_t dimension)
 Creates a new Delaunay triangulation. More...
 
 ~Delaunay () override
 Delaunay destructor.
 
virtual void get_neighbors_internal (index_t v, vector< index_t > &neighbors) const
 Internal implementation for get_neighbors (with vector). More...
 
virtual void set_arrays (index_t nb_cells, const signed_index_t *cell_to_v, const signed_index_t *cell_to_cell)
 Sets the arrays that represent the combinatorics of this Delaunay. More...
 
virtual void update_v_to_cell ()
 Stores for each vertex v a cell incident to v.
 
virtual void update_cicl ()
 Updates the circular incident cell lists. More...
 
virtual void update_neighbors ()
 Computes the stored neighbor lists.
 
void set_next_around_vertex (index_t c1, index_t lv, index_t c2)
 Sets the circular incident edge list. More...
 
void set_dimension (coord_index_t dim)
 Sets the dimension of this Delaunay. More...
 
- Protected Member Functions inherited from GEO::Counted
 Counted ()
 Creates a reference counted object. More...
 
virtual ~Counted ()
 Destroys a reference counted object. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from GEO::Delaunay
static Delaunaycreate (coord_index_t dim, const std::string &name="default")
 Creates a Delaunay triangulation of the specified dimension. More...
 
static void initialize ()
 This function needs to be called once before using the Delaunay class. More...
 
- Static Public Member Functions inherited from GEO::Counted
static void ref (const Counted *counted)
 Increments the reference count. More...
 
static void unref (const Counted *counted)
 Decrements the reference count. More...
 
- Static Protected Member Functions inherited from GEO::Delaunay3d
static index_t tet_facet_vertex (index_t f, index_t v)
 Returns the local index of a vertex by facet and by local vertex index in the facet. More...
 
static index_t find_4 (const signed_index_t *T, signed_index_t v)
 Finds the index of an integer in an array of four integers. More...
 
- Protected Attributes inherited from GEO::Delaunay
coord_index_t dimension_
 
index_t vertex_stride_
 
index_t cell_size_
 
index_t cell_v_stride_
 
index_t cell_neigh_stride_
 
const double * vertices_
 
index_t nb_vertices_
 
index_t nb_cells_
 
const signed_index_tcell_to_v_
 
const signed_index_tcell_to_cell_
 
vector< signed_index_tv_to_cell_
 
vector< signed_index_tcicl_
 
bool is_locked_
 
PackedArrays neighbors_
 
bool store_neighbors_
 
index_t default_nb_neighbors_
 
bool do_reorder_
 If true, uses BRIO reordering (in some implementations)
 
const Meshconstraints_
 
bool refine_
 
double quality_
 
bool store_cicl_
 It true, circular incident tet lists are stored.
 
bool keep_infinite_
 If true, infinite vertex and infinite simplices are kept.
 
index_t nb_finite_cells_
 If keep_infinite_ is true, then finite cells are 0..nb_finite_cells_-1 and infinite cells are nb_finite_cells_ ... nb_cells_.
 
bool keep_regions_
 
- Static Protected Attributes inherited from GEO::Delaunay3d
static const index_t NO_TETRAHEDRON = index_t(-1)
 Symbolic constant for uninitialized hint. More...
 
static const index_t NOT_IN_LIST = index_t(~0)
 Default symbolic value of the cell_next_ field that indicates that a tetrahedron is not in a linked list. More...
 
static const index_t NOT_IN_LIST_BIT = index_t(1u << 31)
 If cell_next_[t] & NOT_IN_LIST_BIT != 0, then t is not in a linked list. More...
 
static const index_t END_OF_LIST = ~(NOT_IN_LIST_BIT)
 Symbolic value of the cell_next_ field that indicates the end of list in a linked list of tetrahedra.
 
static const signed_index_t VERTEX_AT_INFINITY = -1
 Symbolic value for a vertex of a tetrahedron that indicates a virtual tetrahedron. More...
 

Detailed Description

Regular Delaunay triangulation of weighted points.

  • the input points are 4d points, were the fourth coordinate of point \( i \) is \( \sqrt{W - w_i} \) where \( W \) is the maximum of the weights of all the points and \d$ w_i $ is the weight associated with vertex \( i \).
  • the constructed combinatorics is a tetrahedralized volume (3d and not 4d although dimension() returns 4). This tetrahedralized volume corresponds to the regular triangulation of the weighted points.

Definition at line 1293 of file delaunay_3d.h.

Constructor & Destructor Documentation

◆ RegularWeightedDelaunay3d()

GEO::RegularWeightedDelaunay3d::RegularWeightedDelaunay3d ( coord_index_t  dimension = 4)

Constructs a new Regular Delaunay3d triangulation.

RegularWeightedDelaunay3d triangulations are only supported for dimension 3. If a different dimension is specified in the constructor, a InvalidDimension exception is thrown.

Parameters
[in]dimensiondimension of the triangulation
Exceptions
InvalidDimensionThis exception is thrown if dimension is different than 3.

The documentation for this class was generated from the following file: