Geogram
Version 1.9.1
A programming library of geometric algorithms
|
Regular Delaunay triangulation of weighted points. More...
#include <geogram/delaunay/delaunay_2d.h>
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 Mesh * | constraints () 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_t * | cell_to_v () const |
Gets a pointer to the cell-to-vertex incidence array. More... | |
const signed_index_t * | cell_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 Delaunay * | create (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_t * | cell_to_v_ |
const signed_index_t * | cell_to_cell_ |
vector< signed_index_t > | v_to_cell_ |
vector< signed_index_t > | cicl_ |
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 Mesh * | constraints_ |
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... | |
Related Functions inherited from GEO::Delaunay | |
typedef SmartPointer< Delaunay > | Delaunay_var |
Smart pointer that refers to a Delaunay object. | |
typedef Factory1< Delaunay, coord_index_t > | DelaunayFactory |
Delaunay Factory. More... | |
Regular Delaunay triangulation of weighted points.
Definition at line 992 of file delaunay_2d.h.
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.
[in] | dimension | dimension of the triangulation |
InvalidDimension | This exception is thrown if dimension is different from 3. |