|
Graphite Version 3
An experimental 3D geometry processing program
|
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. | |
Public Member Functions inherited from GEO::Delaunay2d | |
| Delaunay2d (coord_index_t dimension=2) | |
| Constructs a new Delaunay2d. | |
| void | set_vertices (index_t nb_vertices, const double *vertices) override |
| Sets the vertices of this Delaunay, and recomputes the cells. | |
| index_t | nearest_vertex (const double *p) const override |
| Computes the nearest vertex from a query point. | |
| bool | has_empty_cells () const |
| Tests whether the Laguerre diagram has empty cells. | |
| void | abort_if_empty_cell (bool x) |
| Specifies behavior if an empty cell is detected. | |
Public Member Functions inherited from GEO::Delaunay | |
| coord_index_t | dimension () const |
| Gets the dimension of this Delaunay. | |
| index_t | cell_size () const |
| Gets the number of vertices in each cell. | |
| void | set_reorder (bool x) |
| Specifies whether vertices should be reordered. | |
| 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. | |
| const double * | vertices_ptr () const |
| Gets a pointer to the array of vertices. | |
| const double * | vertex_ptr (index_t i) const |
| Gets a pointer to a vertex by its global index. | |
| index_t | nb_vertices () const |
| Gets the number of vertices. | |
| virtual bool | supports_constraints () const |
| Tests whether constraints are supported by this Delaunay. | |
| virtual void | set_constraints (const Mesh *mesh) |
| Defines the constraints. | |
| void | set_refine (bool x) |
| Specifies whether the mesh should be refined. | |
| bool | get_refine () const |
| Tests whether mesh refinement is selected. | |
| void | set_quality (double qual) |
| Specifies the desired quality for mesh elements when refinement is enabled (. | |
| const Mesh * | constraints () const |
| Gets the constraints. | |
| index_t | nb_cells () const |
| Gets the number of cells. | |
| index_t | nb_finite_cells () const |
| Gets the number of finite cells. | |
| const signed_index_t * | cell_to_v () const |
| Gets a pointer to the cell-to-vertex incidence array. | |
| const signed_index_t * | cell_to_cell () const |
| Gets a pointer to the cell-to-cell adjacency array. | |
| signed_index_t | cell_vertex (index_t c, index_t lv) const |
| Gets a vertex index by cell index and local vertex index. | |
| signed_index_t | cell_adjacent (index_t c, index_t lf) const |
| Gets an adjacent cell index by cell index and local facet index. | |
| bool | cell_is_infinite (index_t c) const |
| Tests whether a cell is infinite. | |
| bool | cell_is_finite (index_t c) const |
| Tests whether a cell is finite. | |
| index_t | index (index_t c, signed_index_t v) const |
| Retrieves a local vertex index from cell index and global vertex index. | |
| index_t | adjacent_index (index_t c1, index_t c2) const |
| Retrieves a local facet index from two adacent cell global indices. | |
| signed_index_t | vertex_cell (index_t v) const |
| Gets an incident cell index by a vertex index. | |
| signed_index_t | next_around_vertex (index_t c, index_t lv) const |
| Traverses the list of cells incident to a vertex. | |
| void | get_neighbors (index_t v, vector< index_t > &neighbors) const |
| Gets the one-ring neighbors of vertex v. | |
| void | save_histogram (std::ostream &out) const |
| Saves the histogram of vertex degree (can be visualized with gnuplot). | |
| bool | stores_neighbors () const |
| Tests whether neighbors are stored. | |
| void | set_stores_neighbors (bool x) |
| Specifies whether neighbors should be stored. | |
| bool | stores_cicl () const |
| Tests whether incident tetrahedra lists are stored. | |
| void | set_stores_cicl (bool x) |
| Specifies whether incident tetrahedra lists should be stored. | |
| bool | keeps_infinite () const |
| Tests whether infinite elements are kept. | |
| void | set_keeps_infinite (bool x) |
| Sets whether infinite elements should be kept. | |
| bool | thread_safe () const |
| Tests whether thread-safe mode is active. | |
| void | set_thread_safe (bool x) |
| Specifies whether thread-safe mode should be used. | |
| void | set_default_nb_neighbors (index_t x) |
| Sets the default number of stored neighbors. | |
| index_t | default_nb_neighbors () const |
| Gets the default number of stored neighbors. | |
| void | clear_neighbors () |
| Frees all memory used for neighbors storage. | |
| void | set_keep_regions (bool x) |
| Specifies whether all internal regions should be kept. | |
| virtual index_t | region (index_t t) const |
| Gets the region id associated with a tetrahedron. | |
| virtual void | store_neighbors_CB (index_t i) |
| Stores the neighbors of a vertex. | |
Public Member Functions inherited from GEO::Counted | |
| void | ref () const |
| Increments the reference count. | |
| void | unref () const |
| Decrements the reference count. | |
| bool | is_shared () const |
| Check if the object is shared. | |
| int | nb_refs () const |
| Gets the number of references that point to this object. | |
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. | |
| 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. | |
| 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. | |
| index_t | insert (index_t v, index_t hint=NO_TRIANGLE) |
| Inserts a point in the triangulation. | |
| 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. | |
| 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. | |
| 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. | |
| index_t | max_t () const |
| Maximum valid index for a triangle. | |
| bool | triangle_is_in_list (index_t t) const |
| Tests whether a triangle belongs to a linked list. | |
| index_t | triangle_next (index_t t) const |
| Gets the index of a successor of a triangle. | |
| void | add_triangle_to_list (index_t t, index_t &first, index_t &last) |
| Adds a triangle to a linked list. | |
| void | remove_triangle_from_list (index_t t) |
| Removes a triangle from the linked list it belongs to. | |
| bool | triangle_is_finite (index_t t) const |
| Tests whether a given triangle is a finite one. | |
| bool | triangle_is_real (index_t t) const |
| Tests whether a triangle is a real one. | |
| bool | triangle_is_virtual (index_t t) const |
| Tests whether a triangle is a virtual one. | |
| bool | triangle_is_free (index_t t) const |
| Tests whether a triangle is in the free list. | |
| index_t | new_triangle () |
| Creates a new triangle. | |
| index_t | new_triangle (signed_index_t v1, signed_index_t v2, signed_index_t v3) |
| Creates a new triangle. | |
| void | set_triangle_mark_stamp (index_t stamp) |
| Generates a unique stamp for marking tets. | |
| bool | triangle_is_marked (index_t t) const |
| Tests whether a triangle is marked. | |
| void | mark_triangle (index_t t) |
| Marks a triangle. | |
| signed_index_t | triangle_vertex (index_t t, index_t lv) const |
| Gets the index of a vertex of a triangle. | |
| index_t | find_triangle_vertex (index_t t, signed_index_t v) const |
| Finds the index of the vertex in a triangle. | |
| index_t | finite_triangle_vertex (index_t t, index_t lv) const |
| Gets the index of a vertex of a triangle. | |
| void | set_triangle_vertex (index_t t, index_t lv, signed_index_t v) |
| Sets a triangle-to-vertex adjacency. | |
| signed_index_t | triangle_adjacent (index_t t, index_t le) const |
| Gets the index of a triangle adjacent to another one. | |
| void | set_triangle_adjacent (index_t t1, index_t le1, index_t t2) |
| Sets a triangle-to-triangle adjacency. | |
| 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. | |
| 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. | |
| bool | triangle_is_conflict (index_t t, const double *p) const |
| Tests whether a given triangle is in conflict with a given 3d point. | |
| ~Delaunay2d () override | |
| Delaunay2d destructor. | |
| void | show_triangle (index_t t) const |
| For debugging purposes, displays a triangle. | |
| void | show_triangle_adjacent (index_t t, index_t le) const |
| For debugging purposes, displays a triangle adjacency. | |
| void | show_list (index_t first, const std::string &list_name) const |
| For debugging purposes, displays a triangle. | |
| 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. | |
| ~Delaunay () override | |
| Delaunay destructor. | |
| virtual void | get_neighbors_internal (index_t v, vector< index_t > &neighbors) const |
| Internal implementation for get_neighbors (with vector). | |
| 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. | |
| 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. | |
| 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. | |
| void | set_dimension (coord_index_t dim) |
| Sets the dimension of this Delaunay. | |
Protected Member Functions inherited from GEO::Counted | |
| Counted () | |
| Creates a reference counted object. | |
| virtual | ~Counted () |
| Destroys a reference counted object. | |
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. | |
| static void | initialize () |
| This function needs to be called once before using the Delaunay class. | |
Static Public Member Functions inherited from GEO::Counted | |
| static void | ref (const Counted *counted) |
| Increments the reference count. | |
| static void | unref (const Counted *counted) |
| Decrements the reference count. | |
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. | |
| 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. | |
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 constexpr index_t | NO_TRIANGLE = index_t(-1) |
| Symbolic constant for uninitialized hint. | |
| static constexpr 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. | |
| static constexpr 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. | |
| static constexpr 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 constexpr signed_index_t | VERTEX_AT_INFINITY = -1 |
| Symbolic value for a vertex of a triangle that indicates a virtual triangle. | |
Related Symbols 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. | |
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. |