Geogram  Version 1.9.1-rc
A programming library of geometric algorithms
GEO::RegularWeightedDelaunay2d Class Reference

Regular Delaunay triangulation of weighted points. More...

#include <geogram/delaunay/delaunay_2d.h>

Inheritance diagram for GEO::RegularWeightedDelaunay2d:
GEO::Delaunay2d GEO::Delaunay GEO::Counted

Public Member Functions

 RegularWeightedDelaunay2d (coord_index_t dimension=3)
 Constructs a new Regular Delaunay2d triangulation. More...
 
- Public Member Functions inherited from GEO::Delaunay2d
 Delaunay2d (coord_index_t dimension=2)
 Constructs a new Delaunay2d. 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...
 
bool has_empty_cells () const
 Tests whether the Laguerre diagram has empty cells. More...
 
void abort_if_empty_cell (bool x)
 Specifies behavior if an empty cell is detected. 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

 ~RegularWeightedDelaunay2d () override
 RegularWeightedDelaunay2d destructor.
 
- Protected Member Functions inherited from GEO::Delaunay2d
bool create_first_triangle (index_t &iv0, index_t &iv1, index_t &iv2)
 Finds in the pointset a set of three non-colinear points. More...
 
index_t locate (const double *p, index_t hint=NO_TRIANGLE, bool thread_safe=false, Sign *orient=nullptr) const
 Finds the triangle that contains a point. More...
 
index_t locate_inexact (const double *p, index_t hint, index_t max_iter) const
 Finds the triangle that (approximately) contains a point using inexact predicates. More...
 
index_t insert (index_t v, index_t hint=NO_TRIANGLE)
 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 &e_bndry, index_t &first, index_t &last)
 Determines the list of triangles in conflict with a given point. More...
 
void find_conflict_zone_iterative (const double *p, index_t t, index_t &t_bndry, index_t &e_bndry, index_t &first, index_t &last)
 This function is used to implement find_conflict_zone. More...
 
index_t stellate_conflict_zone (index_t v, index_t t_bndry, index_t e_bndry)
 Creates a star of triangles filling the conflict zone. More...
 
index_t max_t () const
 Maximum valid index for a triangle. More...
 
bool triangle_is_in_list (index_t t) const
 Tests whether a triangle belongs to a linked list. More...
 
index_t triangle_next (index_t t) const
 Gets the index of a successor of a triangle. More...
 
void add_triangle_to_list (index_t t, index_t &first, index_t &last)
 Adds a triangle to a linked list. More...
 
void remove_triangle_from_list (index_t t)
 Removes a triangle from the linked list it belongs to. More...
 
bool triangle_is_finite (index_t t) const
 Tests whether a given triangle is a finite one. More...
 
bool triangle_is_real (index_t t) const
 Tests whether a triangle is a real one. More...
 
bool triangle_is_virtual (index_t t) const
 Tests whether a triangle is a virtual one. More...
 
bool triangle_is_free (index_t t) const
 Tests whether a triangle is in the free list. More...
 
index_t new_triangle ()
 Creates a new triangle. More...
 
index_t new_triangle (signed_index_t v1, signed_index_t v2, signed_index_t v3)
 Creates a new triangle. More...
 
void set_triangle_mark_stamp (index_t stamp)
 Generates a unique stamp for marking tets. More...
 
bool triangle_is_marked (index_t t) const
 Tests whether a triangle is marked. More...
 
void mark_triangle (index_t t)
 Marks a triangle. More...
 
signed_index_t triangle_vertex (index_t t, index_t lv) const
 Gets the index of a vertex of a triangle. More...
 
index_t find_triangle_vertex (index_t t, signed_index_t v) const
 Finds the index of the vertex in a triangle. More...
 
index_t finite_triangle_vertex (index_t t, index_t lv) const
 Gets the index of a vertex of a triangle. More...
 
void set_triangle_vertex (index_t t, index_t lv, signed_index_t v)
 Sets a triangle-to-vertex adjacency. More...
 
signed_index_t triangle_adjacent (index_t t, index_t le) const
 Gets the index of a triangle adjacent to another one. More...
 
void set_triangle_adjacent (index_t t1, index_t le1, index_t t2)
 Sets a triangle-to-triangle adjacency. More...
 
index_t find_triangle_adjacent (index_t t1, index_t t2_in) const
 Finds the index of the edge 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, index_t a0, index_t a1, index_t a2)
 Sets the vertices and adjacent triangles of a triangle. More...
 
bool triangle_is_conflict (index_t t, const double *p) const
 Tests whether a given triangle is in conflict with a given 3d point. More...
 
 ~Delaunay2d () override
 Delaunay2d destructor.
 
void show_triangle (index_t t) const
 For debugging purposes, displays a triangle. More...
 
void show_triangle_adjacent (index_t t, index_t le) const
 For debugging purposes, displays a triangle adjacency. More...
 
void show_list (index_t first, const std::string &list_name) const
 For debugging purposes, displays a triangle. 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::Delaunay2d
static index_t triangle_edge_vertex (index_t e, index_t v)
 Returns the local index of a vertex by edge and by local vertex index in the edge. More...
 
static index_t find_3 (const signed_index_t *T, signed_index_t v)
 Finds the index of an integer in an array of three 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::Delaunay2d
static const index_t NO_TRIANGLE = 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 triangle 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 triangles.
 
static const signed_index_t VERTEX_AT_INFINITY = -1
 Symbolic value for a vertex of a triangle that indicates a virtual triangle. More...
 

Detailed Description

Regular Delaunay triangulation of weighted points.

  • the input points are 2d points, were the third 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 triangulated surface (2d and not 3d although dimension() returns 3). This triangulated surface corresponds to the regular triangulation of the weighted points.

Definition at line 992 of file delaunay_2d.h.

Constructor & Destructor Documentation

◆ RegularWeightedDelaunay2d()

GEO::RegularWeightedDelaunay2d::RegularWeightedDelaunay2d ( coord_index_t  dimension = 3)

Constructs a new Regular Delaunay2d triangulation.

RegularWeightedDelaunay2d 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 from 3.

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