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