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

Delaunay interface for NearestNeighbors search. More...

#include <geogram/delaunay/delaunay_nn.h>

Inheritance diagram for GEO::Delaunay_NearestNeighbors:
GEO::Delaunay GEO::Counted

Public Member Functions

 Delaunay_NearestNeighbors (coord_index_t dimension)
 Creates a new Delaunay_NearestNeighbors. More...
 
virtual void enlarge_neighborhood (index_t i, index_t nb)
 Stores nb neighbors with vertex i. 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...
 
NearestNeighborSearchnn_search ()
 Gets the NearestNeighborSearch used internally. More...
 
void store_neighbors_CB (index_t i) override
 Used internally for parallel computation of the neighborhoods in Delaunay.
 
- 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...
 
- 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

 ~Delaunay_NearestNeighbors () override
 Delaunay_NearestNeighbors destructor.
 
void get_neighbors_internal (index_t v, vector< index_t > &neighbors) const override
 Internal implementation for get_neighbors (with vector). More...
 
virtual index_t get_neighbors_internal (index_t v, index_t nb_neighbors, index_t *neighbors) const
 Internal implementation for get_neighbors (with pointers). More...
 
- Protected Member Functions inherited from GEO::Delaunay
 Delaunay (coord_index_t dimension)
 Creates a new Delaunay triangulation. More...
 
 ~Delaunay () override
 Delaunay destructor.
 
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...
 
- 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_
 

Detailed Description

Delaunay interface for NearestNeighbors search.

This does not fully implement a Delaunay triangulation, cell-related queries are not implemented. It only implements neighborhood queries, which are the only ones needed by RestrictedVoronoiDiagram with radius of security.

Definition at line 63 of file delaunay_nn.h.

Constructor & Destructor Documentation

◆ Delaunay_NearestNeighbors()

GEO::Delaunay_NearestNeighbors::Delaunay_NearestNeighbors ( coord_index_t  dimension)

Creates a new Delaunay_NearestNeighbors.

Parameters
[in]dimensionthe dimension of the points

Member Function Documentation

◆ enlarge_neighborhood()

virtual void GEO::Delaunay_NearestNeighbors::enlarge_neighborhood ( index_t  i,
index_t  nb 
)
virtual

Stores nb neighbors with vertex i.

By default, Delaunay::default_nb_neighbors() are stored for each vertex. This function changes the number of stored neighbors for a given vertex.

Parameters
[in]iindex of the vertex which neighborhood should be enlarged
[in]nbnew number of vertices in vertex i's neighborhood.

◆ get_neighbors_internal() [1/2]

virtual index_t GEO::Delaunay_NearestNeighbors::get_neighbors_internal ( index_t  v,
index_t  nb_neighbors,
index_t neighbors 
) const
protectedvirtual

Internal implementation for get_neighbors (with pointers).

Parameters
[in]vindex of the Delaunay vertex
[in]nb_neighborsrequired number of neighbors
[out]neighborsthe computed neighbors of vertex v, allocated and managed by caller
Returns
the obtained number of neighbors (can be smaller than nb_neighbors if duplicate points are encountered)

◆ get_neighbors_internal() [2/2]

void GEO::Delaunay_NearestNeighbors::get_neighbors_internal ( index_t  v,
vector< index_t > &  neighbors 
) const
overrideprotectedvirtual

Internal implementation for get_neighbors (with vector).

Parameters
[in]vindex of the Delaunay vertex
[in,out]neighborsthe computed neighbors of vertex v. Its size is used to determine the number of queried neighbors.

Reimplemented from GEO::Delaunay.

◆ nearest_vertex()

index_t GEO::Delaunay_NearestNeighbors::nearest_vertex ( const double *  p) const
overridevirtual

Computes the nearest vertex from a query point.

Parameters
[in]pquery point
Returns
the index of the nearest vertex

Reimplemented from GEO::Delaunay.

◆ nn_search()

NearestNeighborSearch* GEO::Delaunay_NearestNeighbors::nn_search ( )
inline

Gets the NearestNeighborSearch used internally.

Returns
a pointer to the NearestNeighborSearch.

Definition at line 92 of file delaunay_nn.h.

◆ set_vertices()

void GEO::Delaunay_NearestNeighbors::set_vertices ( index_t  nb_vertices,
const double *  vertices 
)
overridevirtual

Sets the vertices of this Delaunay, and recomputes the cells.

Parameters
[in]nb_verticesnumber of vertices
[in]verticesa pointer to the coordinates of the vertices, as a contiguous array of doubles

Reimplemented from GEO::Delaunay.


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