|
Graphite Version 3
An experimental 3D geometry processing program
|
Regular Delaunay triangulation of weighted points. More...
#include <geogram/delaunay/delaunay_3d.h>
Public Member Functions | |
| RegularWeightedDelaunay3d (coord_index_t dimension=4) | |
| Constructs a new Regular Delaunay3d triangulation. | |
Public Member Functions inherited from GEO::Delaunay3d | |
| Delaunay3d (coord_index_t dimension=3) | |
| Constructs a new Delaunay3d. | |
| 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. | |
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 | |
| ~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. | |
| 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. | |
| 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. | |
| index_t | insert (index_t v, index_t hint=NO_TETRAHEDRON) |
| 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 &f_bndry, index_t &first, index_t &last) |
| Determines the list of tetrahedra in conflict with a given point. | |
| 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. | |
| index_t | stellate_cavity (index_t v) |
| Creates a star of tetrahedra filling the conflict zone. | |
| 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. | |
| 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. | |
| index_t | max_t () const |
| Maximum valid index for a tetrahedron. | |
| bool | tet_is_in_list (index_t t) const |
| Tests whether a tetrahedron belongs to a linked list. | |
| index_t | tet_next (index_t t) const |
| Gets the index of a successor of a tetrahedron. | |
| void | add_tet_to_list (index_t t, index_t &first, index_t &last) |
| Adds a tetrahedron to a linked list. | |
| void | remove_tet_from_list (index_t t) |
| Removes a tetrahedron from the linked list it belongs to. | |
| bool | tet_is_finite (index_t t) const |
| Tests whether a given tetrahedron is a finite one. | |
| bool | tet_is_real (index_t t) const |
| Tests whether a tetrahedron is a real one. | |
| bool | tet_is_virtual (index_t t) const |
| Tests whether a tetrahedron is a virtual one. | |
| bool | tet_is_free (index_t t) const |
| Tests whether a tetrahedron is in the free list. | |
| index_t | new_tetrahedron () |
| Creates a new tetrahedron. | |
| index_t | new_tetrahedron (signed_index_t v1, signed_index_t v2, signed_index_t v3, signed_index_t v4) |
| Creates a new tetrahedron. | |
| void | set_tet_mark_stamp (index_t stamp) |
| Generates a unique stamp for marking tets. | |
| bool | tet_is_marked (index_t t) const |
| Tests whether a tetrahedron is marked. | |
| void | mark_tet (index_t t) |
| Marks a tetrahedron. | |
| signed_index_t | tet_vertex (index_t t, index_t lv) const |
| Gets the index of a vertex of a tetrahedron. | |
| index_t | find_tet_vertex (index_t t, signed_index_t v) const |
| Finds the index of the vertex in a tetrahedron. | |
| index_t | finite_tet_vertex (index_t t, index_t lv) const |
| Gets the index of a vertex of a tetrahedron. | |
| void | set_tet_vertex (index_t t, index_t lv, signed_index_t v) |
| Sets a tetrahedron-to-vertex adjacency. | |
| signed_index_t | tet_adjacent (index_t t, index_t lf) const |
| Gets the index of a tetrahedron adjacent to another one. | |
| void | set_tet_adjacent (index_t t1, index_t lf1, index_t t2) |
| Sets a tetrahedron-to-tetrahedron adjacency. | |
| 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. | |
| 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. | |
| 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. | |
| bool | tet_is_conflict (index_t t, const double *p) const |
| Tests whether a given tetrahedron is in conflict with a given 3d point. | |
| ~Delaunay3d () override | |
| Delaunay3d destructor. | |
| void | show_tet (index_t t) const |
| For debugging purposes, displays a tetrahedron. | |
| void | show_tet_adjacent (index_t t, index_t lf) const |
| For debugging purposes, displays a tetrahedron adjacency. | |
| void | show_list (index_t first, const std::string &list_name) const |
| For debugging purposes, displays a tetrahedron. | |
| 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::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. | |
| 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. | |
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::Delaunay3d | |
| static constexpr index_t | NO_TETRAHEDRON = 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 tetrahedron 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 tetrahedra. | |
| static constexpr signed_index_t | VERTEX_AT_INFINITY = -1 |
| Symbolic value for a vertex of a tetrahedron that indicates a virtual tetrahedron. | |
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 1293 of file delaunay_3d.h.
| 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.
| [in] | dimension | dimension of the triangulation |
| InvalidDimension | This exception is thrown if dimension is different than 3. |