Graphite
Version 3
An experimental 3D geometry processing program
|
Computes the intersection between a set of halfspaces. More...
#include <geogram/voronoi/generic_RVD_cell.h>
Classes | |
class | Corner |
A Corner corresponds to a vertex seen from a triangle. More... | |
struct | Triangle |
Represents a vertex of this ConvexCell in dual form. More... | |
class | Vertex |
Represents a facet of this ConvexCell in dual form. More... | |
Public Types | |
enum | TriangleStatus { TRI_IS_FREE = 0 , TRI_IS_CONFLICT = 1 , TRI_IS_USED = 2 } |
Represents the current state of a triangle. | |
Public Member Functions | |
ConvexCell (coord_index_t dim) | |
ConvexCell constructor. More... | |
void | copy (const ConvexCell &rhs) |
Copies a ConvexCell. More... | |
coord_index_t | dimension () const |
Gets the dimension of this ConvexCell. More... | |
void | clear () |
Clears this ConvexCell. | |
void | set_symbolic_is_surface (bool x) |
Specifies that symbolic information is relative to surfacic mesh (rather than volumetric mesh). More... | |
void | initialize_from_mesh_tetrahedron (const Mesh *mesh, index_t t, bool symbolic, const GEO::Attribute< double > &vertex_weight) |
Assigns a mesh tetrahedron to this ConvexCell. More... | |
void | initialize_from_surface_mesh (Mesh *mesh, bool symbolic) |
Copies a Mesh into a ConvexCell. More... | |
void | convert_to_mesh (Mesh *mesh, bool copy_symbolic_info=false) |
Copies a ConvexCell into a Mesh. More... | |
template<index_t DIM> | |
signed_index_t | clip_by_plane (const Mesh *mesh, const Delaunay *delaunay, index_t i, index_t j, bool exact, bool symbolic) |
Clips this ConvexCell with a plane. More... | |
index_t | max_t () const |
Gets the maximum valid triangle index plus one. More... | |
index_t | nb_t () const |
Gets the number of used triangles. | |
index_t | max_v () const |
Gets the maximum valid vertex index plus one. | |
bool | triangle_is_free (index_t t) const |
Tests whether a given triangle is free. | |
bool | triangle_is_valid (index_t t) const |
Tests whether a given triangle is valid. More... | |
bool | triangle_is_used (index_t t) const |
Tests whether a given triangle is used. More... | |
bool | triangle_is_conflict (index_t t) const |
Tests whether a given triangle belongs to the conflict zone. More... | |
index_t | triangle_vertex (index_t t, index_t iv) const |
Gets the index of a triangle vertex. More... | |
index_t | triangle_adjacent (index_t t, index_t e) const |
Gets the index of a triangle adjacent to another one. More... | |
void | set_triangle_vertex (index_t t, index_t iv, index_t v) |
Sets a vertex of a triangle. More... | |
void | set_triangle_adjacent (index_t t, index_t e, index_t t2) |
Sets a triangle adjacency. More... | |
index_t | find_triangle_vertex (index_t t, index_t v) const |
Finds the local index of a triangle vertex. More... | |
index_t | triangle_adjacent_index (index_t t1, index_t t2) const |
Finds the edge along which two triangles are adjacent. More... | |
signed_index_t | vertex_triangle (index_t v) const |
Gets one of the triangles incident to a vertex. More... | |
void | set_vertex_triangle (index_t v, index_t t) |
Stores in a vertex the index of one the triangles incident to it. More... | |
const GEOGen::Vertex & | triangle_dual (index_t t) const |
Gets the dual vertex that corresponds to a triangle. More... | |
GEOGen::Vertex & | triangle_dual (index_t t) |
Gets the dual vertex that corresponds to a triangle. More... | |
signed_index_t | cell_id () const |
Gets the id of this ConvexCell. More... | |
void | set_cell_id (signed_index_t i) |
Sets the id of this ConvexCell. More... | |
signed_index_t | triangle_id (index_t t) const |
Gets the id of a triangle. More... | |
void | set_triangle_id (index_t t, signed_index_t id) |
Sets the id of a triangle. More... | |
signed_index_t | vertex_id (index_t v) const |
Gets the id of a vertex. More... | |
void | set_vertex_id (index_t v, signed_index_t id) |
Sets the id of a vertex. More... | |
void | move_to_next_around_vertex (Corner &c) const |
Replaces a corner by the next corner obtained by turing around the vertex. More... | |
void | init_v_to_t () |
Updates the cache that stores for each vertex a triangle incident to it. | |
index_t | create_triangle () |
Creates a new uninitialized triangle. More... | |
index_t | create_triangle (index_t v0, index_t v1, index_t v2) |
Creates a new triangle with specified vertices. More... | |
index_t | create_triangle (index_t v0, index_t v1, index_t v2, index_t t0, index_t t1, index_t t2) |
Creates a new triangles with specified vertices and adjacent triangles. More... | |
void | set_triangle (index_t t, index_t v0, index_t v1, index_t v2, index_t t0, index_t t1, index_t t2) |
Sets the vertices and adjacent triangles of a triangle. More... | |
index_t | create_triangle (const double *p, double w, index_t v0, index_t v1, index_t v2, index_t t0, index_t t1, index_t t2) |
Creates a new triangles with specified vertices, adjacent triangles and geometric location at the dual vertex. More... | |
index_t | create_triangle_copy (const double *p, index_t v0, index_t v1, index_t v2, index_t t0, index_t t1, index_t t2) |
Creates a new triangles with specified vertices, adjacent triangles and geometric location at the dual vertex. More... | |
index_t | create_vertex () |
Creates a new vertex. More... | |
template<index_t DIM> | |
index_t | triangulate_hole (const Delaunay *delaunay, index_t i, index_t j, bool symbolic, index_t t1, index_t t1ebord, index_t v_in) |
Triangulates the conflict zone. More... | |
template<index_t DIM> | |
void | get_conflict_list (const Mesh *mesh, const Delaunay *delaunay, index_t i, index_t j, bool exact, index_t &conflict_begin, index_t &conflict_end) |
Determines the conflict zone. More... | |
template<index_t DIM> | |
index_t | find_furthest_point_linear_scan (const Delaunay *delaunay, index_t i, index_t j) const |
Finds the index of the vertex furthest away on the negative side of a bisector. More... | |
template<index_t DIM> | |
void | propagate_conflict_list (const Mesh *mesh, const Delaunay *delaunay, index_t first_t, index_t i, index_t j, bool exact, index_t &conflict_begin, index_t &conflict_end) |
Computes the conflict list by propagation from a conflict triangle. More... | |
template<index_t DIM> | |
Sign | side (const Mesh *mesh, const Delaunay *delaunay, const GEOGen::Vertex &v, index_t i, index_t j, bool exact) const |
Tests on which side a vertex is relative to a bisector. More... | |
Sign | side_exact (const Mesh *mesh, const Delaunay *delaunay, const GEOGen::Vertex &v, const double *pi, const double *pj, coord_index_t dim, bool symbolic_is_surface=false) const |
Tests on which side a vertex is relative to a bisector using exact predicates. More... | |
bool | find_triangle_on_border (index_t conflict_begin, index_t conflict_end, index_t &t, index_t &e) const |
Gets a triangle and an edge on the internal border of the conflict zone. More... | |
index_t | next_triangle (index_t t) const |
Gets the successor of a triangle. More... | |
void | set_next_triangle (index_t t, index_t t2) |
Sets the successor of a triangle. More... | |
void | mark_as_free (index_t t) |
Specify that a triangle is free. More... | |
void | mark_as_conflict (index_t t) |
Specify that a triangle belongs to the conflict zone. | |
void | mark_as_used (index_t t) |
Specify that a triangle is used. | |
void | append_triangle_to_conflict_list (index_t t, index_t &conflict_begin, index_t &conflict_end) |
Appends a triangle to the conflict list. More... | |
void | merge_into_free_list (index_t list_begin, index_t list_end) |
Merges a list of triangles into the free list. More... | |
void | grow () |
Allocates a new triangle. More... | |
std::ostream & | show_stats (std::ostream &os) const |
Displays the number of free,used,conflict triangles. More... | |
Static Public Member Functions | |
template<index_t DIM> | |
static double | signed_bisector_distance (const Delaunay *delaunay, index_t i, index_t j, const double *q) |
Evaluates the equation of a bisector at a given point. More... | |
static index_t | global_facet_id (const Mesh *mesh, index_t t, index_t lf) |
Computes a unique global facet id from a mesh tetrahedron and local facet index. More... | |
Static Public Attributes | |
static const index_t | NO_TRIANGLE = index_t(-1) |
static const index_t | NO_VERTEX = index_t(-1) |
static const index_t | END_OF_LIST = index_t(-1) |
Computes the intersection between a set of halfspaces.
Definition at line 69 of file generic_RVD_cell.h.
|
inline |
ConvexCell constructor.
[in] | dim | dimension of the ConvexCell, e.g. 3 for 3d |
Definition at line 173 of file generic_RVD_cell.h.
|
inline |
Appends a triangle to the conflict list.
The triangle is marked as conflict and linked to the conflict list.
[in] | t | the triangle |
[in,out] | conflict_begin | first triangle in the conflict list |
[in,out] | conflict_end | one position past the last triangle in the conflict list |
Definition at line 1306 of file generic_RVD_cell.h.
|
inline |
Gets the id of this ConvexCell.
The id can be used to maintain the correspondence with a tetrahedron in the Mesh.
Definition at line 575 of file generic_RVD_cell.h.
|
inline |
Clips this ConvexCell with a plane.
The plane is specified as a bisector in a Delaunay triangulation.
[in] | mesh | input mesh, used by exact predicates |
[in] | delaunay | the Delaunay triangulation |
[in] | i | index of the first extremity of the bisector |
[in] | j | index of the second extremity of the bisector |
[in] | exact | if true, uses exact predicates (implies symbolic) |
[in] | symbolic | if true, computes symbolic information |
DIM | dimension (specified as a template parameter for efficiency reasons). |
Definition at line 282 of file generic_RVD_cell.h.
void GEOGen::ConvexCell::convert_to_mesh | ( | Mesh * | mesh, |
bool | copy_symbolic_info = false |
||
) |
Copies a ConvexCell into a Mesh.
On exit, the output mesh is a surfacic mesh with the boundary of the convex cell.
[out] | mesh | a pointer to the target mesh |
[in] | copy_symbolic_info | if true, symbolic information is copied. An attribute "id" is attached to the facets. The value of id[f] is either 1 + the index of the Voronoi vertex that generated with i the bisector that created the facet, or -1-g if the facet was an original facet of mesh mesh , where g is the index of the original facet in mesh . |
void GEOGen::ConvexCell::copy | ( | const ConvexCell & | rhs | ) |
Copies a ConvexCell.
The allocated vertices are shared with rhs
, thus rhs
should not be deleted before this ConvexCell.
[in] | rhs | a const reference to the ConvexCell to be copied. |
|
inline |
Creates a new uninitialized triangle.
The created triangle is marked as used.
Definition at line 720 of file generic_RVD_cell.h.
|
inline |
Creates a new triangles with specified vertices, adjacent triangles and geometric location at the dual vertex.
The vertex is shared with caller. The created triangle is marked as used.
[in] | p | geometric location at the dual vertex, shared with caller. Caller remains responsible for memory management. |
[in] | w | the weight associated with point p |
[in] | v0 | index of first vertex |
[in] | v1 | index of second vertex |
[in] | v2 | index of third vertex |
[in] | t0 | index of adjacent triangle opposite to v0 |
[in] | t1 | index of adjacent triangle opposite to v1 |
[in] | t2 | index of adjacent triangle opposite to v2 |
Definition at line 816 of file generic_RVD_cell.h.
|
inline |
Creates a new triangle with specified vertices.
The created triangle is marked as used. Adjacent triangles are left uninitialized.
[in] | v0 | index of first vertex |
[in] | v1 | index of second vertex |
[in] | v2 | index of third vertex |
Definition at line 740 of file generic_RVD_cell.h.
|
inline |
Creates a new triangles with specified vertices and adjacent triangles.
The created triangle is marked as used.
[in] | v0 | index of first vertex |
[in] | v1 | index of second vertex |
[in] | v2 | index of third vertex |
[in] | t0 | index of adjacent triangle opposite to v0 |
[in] | t1 | index of adjacent triangle opposite to v1 |
[in] | t2 | index of adjacent triangle opposite to v2 |
Definition at line 760 of file generic_RVD_cell.h.
|
inline |
Creates a new triangles with specified vertices, adjacent triangles and geometric location at the dual vertex.
The vertex is copied into local storage. The created triangle is marked as used.
[in] | p | geometric location at the dual vertex. Vertex is copied into local storage. |
[in] | v0 | index of first vertex |
[in] | v1 | index of second vertex |
[in] | v2 | index of third vertex |
[in] | t0 | index of adjacent triangle opposite to v0 |
[in] | t1 | index of adjacent triangle opposite to v1 |
[in] | t2 | index of adjacent triangle opposite to v2 |
Definition at line 844 of file generic_RVD_cell.h.
|
inline |
Creates a new vertex.
Definition at line 862 of file generic_RVD_cell.h.
|
inline |
Gets the dimension of this ConvexCell.
Definition at line 194 of file generic_RVD_cell.h.
|
inline |
Finds the index of the vertex furthest away on the negative side of a bisector.
[in] | delaunay | the Delaunay triangulation |
[in] | i | index of the first extremity of the bisector in delaunay |
[in] | j | index of the second extremity of the bisector in delaunay |
j's
side, or -1 if all the vertices are on i's
side. Definition at line 1044 of file generic_RVD_cell.h.
|
inline |
Gets a triangle and an edge on the internal border of the conflict zone.
The returned triangle touches the conflict zone from inside.
[in] | conflict_begin | first triangle of the conflict zone |
[in] | conflict_end | one element past the last triangle of the conflict zone |
[out] | t | a triangle in the conflict zone adjacent to the border of the conflict zone. |
[out] | e | the edge along which t is adjacent to the border of the conflict zone. |
Definition at line 1226 of file generic_RVD_cell.h.
|
inline |
Finds the local index of a triangle vertex.
[in] | t | the triangle |
[in] | v | global vertex index |
v
in t
t
is incident to v
Definition at line 469 of file generic_RVD_cell.h.
|
inline |
Determines the conflict zone.
The conflict zone corresponds to the set of triangles that have their dual vertices on the negative side of a bisector.
[in] | mesh | the input mesh |
[in] | delaunay | the Delaunay triangulation |
[in] | i | index of the first extremity of the bisector in delaunay |
[in] | j | index of the second extremity of the bisector in delaunay |
[in] | exact | if true, exact predicates are used |
[out] | conflict_begin | index of the first triangle in conflict list |
[out] | conflict_end | one position past index of the last triangle in conflict list |
Definition at line 980 of file generic_RVD_cell.h.
|
inlinestatic |
Computes a unique global facet id from a mesh tetrahedron and local facet index.
If a facet is shared by two tetrahedra t1 and t2, its global index determined from t1 and from t2 is the same.
[in] | mesh | the mesh |
[in] | t | the index of the tetrahedron |
[in] | lf | the local facet index (0,1,2 or 3) in tetrahedron t |
Definition at line 1367 of file generic_RVD_cell.h.
|
inline |
Allocates a new triangle.
This function is called whenever a triangle needs to be created and the free list is empty.
Definition at line 1344 of file generic_RVD_cell.h.
void GEOGen::ConvexCell::initialize_from_mesh_tetrahedron | ( | const Mesh * | mesh, |
index_t | t, | ||
bool | symbolic, | ||
const GEO::Attribute< double > & | vertex_weight | ||
) |
Assigns a mesh tetrahedron to this ConvexCell.
The tetrahedron from the initial mesh is converted into the internal geometric/symbolic representation.
[in] | mesh | the mesh from which the tetrahedron is copied |
[in] | t | the index of the tetrahedron in mesh |
[in] | symbolic | if true, symbolic information is copied |
[in] | vertex_weight | if bound, an attribute that gives the weight of each vertex in mesh . |
void GEOGen::ConvexCell::initialize_from_surface_mesh | ( | Mesh * | mesh, |
bool | symbolic | ||
) |
Copies a Mesh into a ConvexCell.
The surface mesh in mesh
represents the boundary of the ConvexCell.
[in] | mesh | a pointer to the input Mesh |
[in] | symbolic | if true, symbolic information is copied |
|
inline |
Specify that a triangle is free.
A free triangle can be reused by subsequent triangle creations.
Definition at line 1273 of file generic_RVD_cell.h.
|
inline |
Gets the maximum valid triangle index plus one.
May be greater than nb_t() if this ConvexCell has some free (unused) triangles.
Definition at line 339 of file generic_RVD_cell.h.
|
inline |
Merges a list of triangles into the free list.
[in] | list_begin | first triangle in the list to be freed |
[in] | list_end | one position past the last triangle of the list to be freed |
Definition at line 1324 of file generic_RVD_cell.h.
|
inline |
Replaces a corner by the next corner obtained by turing around the vertex.
[in,out] | c | the corner |
Definition at line 690 of file generic_RVD_cell.h.
|
inline |
Gets the successor of a triangle.
Triangles are linked, for instance to represent the conflict zone.
Definition at line 1249 of file generic_RVD_cell.h.
|
inline |
Computes the conflict list by propagation from a conflict triangle.
[in] | mesh | the input mesh |
[in] | delaunay | the Delaunay triangulation |
[in] | first_t | a triangle in the conflict zone |
[in] | i | index of the first extremity of the bisector in delaunay |
[in] | j | index of the second extremity of the bisector in delaunay |
[in] | exact | if true, exact predicates are used |
[out] | conflict_begin | index of the first triangle in conflict list |
[out] | conflict_end | one position past index of the last triangle in conflict list |
Definition at line 1105 of file generic_RVD_cell.h.
|
inline |
Sets the id of this ConvexCell.
The id can be used to maintain the correspondence with a tetrahedron in the Mesh.
[in] | i | the id of this ConvexCell. Can be a negative number. |
Definition at line 586 of file generic_RVD_cell.h.
|
inline |
Sets the successor of a triangle.
Triangles are linked, for instance to represent the conflict zone.
[in] | t | index of the triangle |
[in] | t2 | index of the successor |
Definition at line 1262 of file generic_RVD_cell.h.
|
inline |
Specifies that symbolic information is relative to surfacic mesh (rather than volumetric mesh).
Affects the behavior of side_exact().
[in] | x | true if symbolic information is relative to surfacic mesh (triangles), false if symbolic information is relative to volumetric mesh (tetrahedra). |
Definition at line 217 of file generic_RVD_cell.h.
|
inline |
Sets the vertices and adjacent triangles of a triangle.
[in] | t | index of the triangle |
[in] | v0 | index of first vertex |
[in] | v1 | index of second vertex |
[in] | v2 | index of third vertex |
[in] | t0 | index of adjacent triangle opposite to v0 |
[in] | t1 | index of adjacent triangle opposite to v1 |
[in] | t2 | index of adjacent triangle opposite to v2 |
Definition at line 784 of file generic_RVD_cell.h.
|
inline |
Sets a triangle adjacency.
[in] | t | the triangle index |
[in] | e | local edge index (0,1 or 2) |
[in] | t2 | global triangle index |
Definition at line 452 of file generic_RVD_cell.h.
|
inline |
Sets the id of a triangle.
Each triangle of a ConvexCell has an id, that can be used to maintain the correspondence with a vertex in the Mesh.
Definition at line 606 of file generic_RVD_cell.h.
|
inline |
Sets a vertex of a triangle.
[in] | t | the triangle index |
[in] | iv | local vertex index (0,1 or 2) in t |
[in] | v | global vertex index |
Definition at line 438 of file generic_RVD_cell.h.
|
inline |
Sets the id of a vertex.
Each vertex of a ConvexCell has an id, that can be used to maintain the correspondence with a facet in the Mesh.
Definition at line 627 of file generic_RVD_cell.h.
|
inline |
Stores in a vertex the index of one the triangles incident to it.
[in] | v | index of the vertex |
[in] | t | index of one of the triangles incident to v |
Definition at line 534 of file generic_RVD_cell.h.
std::ostream& GEOGen::ConvexCell::show_stats | ( | std::ostream & | os | ) | const |
Displays the number of free,used,conflict triangles.
For debugging purposes.
|
inline |
Tests on which side a vertex is relative to a bisector.
[in] | mesh | the input mesh |
[in] | delaunay | the Delaunay triangulation |
[in] | v | the query vertex |
[in] | i | index of the first extremity of the bisector in delaunay |
[in] | j | index of the second extremity of the bisector in delaunay |
[in] | exact | if true, exact predicates are used |
v
is on vertex i's
side, NEGATIVE otherwise. ZERO is never returned since globally coherent symbolic perturbations are used in exact mode. DIM | dimension, specified as a template parameter for efficiency considerations. |
Definition at line 1165 of file generic_RVD_cell.h.
Sign GEOGen::ConvexCell::side_exact | ( | const Mesh * | mesh, |
const Delaunay * | delaunay, | ||
const GEOGen::Vertex & | v, | ||
const double * | pi, | ||
const double * | pj, | ||
coord_index_t | dim, | ||
bool | symbolic_is_surface = false |
||
) | const |
Tests on which side a vertex is relative to a bisector using exact predicates.
[in] | mesh | the input mesh |
[in] | delaunay | the Delaunay triangulation |
[in] | v | the query vertex |
[in] | pi | first extremity of the bisector |
[in] | pj | second extremity of the bisector |
[in] | dim | dimension of the points |
[in] | symbolic_is_surface | if true, then symbolic information is relative to a surface mesh (facets) rather than volumetric mesh (tetrahedra). |
v
is on vertex i's
side, NEGATIVE otherwise. ZERO is never returned since globally coherent symbolic perturbations are used in exact mode.
|
inlinestatic |
Evaluates the equation of a bisector at a given point.
Positive side corresponds to vertex i
and negative side to vertex j
.
[in] | delaunay | the Delaunay triangulation |
[in] | i | index of the first extremity of the bisector in delaunay |
[in] | j | index of the second extremity of the bisector in delaunay |
[in] | q | the query point |
Definition at line 1075 of file generic_RVD_cell.h.
|
inline |
Gets the index of a triangle adjacent to another one.
[in] | t | the triangle index |
[in] | e | local edge index (0,1 or 2) in t |
t
on edge e
Definition at line 426 of file generic_RVD_cell.h.
|
inline |
Finds the edge along which two triangles are adjacent.
[in] | t1 | first triangle |
[in] | t2 | second triangle |
t1
along which t2
is adjacent to t1
t1
and t2
are adjacent Definition at line 492 of file generic_RVD_cell.h.
|
inline |
Gets the dual vertex that corresponds to a triangle.
Each triangle corresponds to a vertex of the ConvexCell (combinatorics are stored in dual form).
[in] | t | index of the triangle |
Definition at line 563 of file generic_RVD_cell.h.
|
inline |
Gets the dual vertex that corresponds to a triangle.
Each triangle corresponds to a vertex of the ConvexCell (combinatorics are stored in dual form).
[in] | t | index of the triangle |
Definition at line 549 of file generic_RVD_cell.h.
|
inline |
Gets the id of a triangle.
Each triangle of a ConvexCell has an id, that can be used to maintain the correspondence with a vertex in the Mesh.
t
. Definition at line 596 of file generic_RVD_cell.h.
|
inline |
Tests whether a given triangle belongs to the conflict zone.
[in] | t | index of the triangle |
Definition at line 401 of file generic_RVD_cell.h.
|
inline |
Tests whether a given triangle is used.
[in] | t | index of the triangle |
Definition at line 389 of file generic_RVD_cell.h.
|
inline |
Tests whether a given triangle is valid.
A "valid" triangle is a triangle from which we can query information (vertices, adjacent triangles, embedding), therefore it is a "used" or "conflict" triangle.
[in] | t | index of the triangle |
Definition at line 380 of file generic_RVD_cell.h.
|
inline |
Gets the index of a triangle vertex.
[in] | t | the triangle index |
[in] | iv | local vertex index (0,1 or 2) in t |
iv
th vertex Definition at line 414 of file generic_RVD_cell.h.
|
inline |
Triangulates the conflict zone.
Creates the triangles radiating from new_v
and attached to the border of the conflict zone, indicated by t
and e
.
[in] | delaunay | the Delaunay triangulation |
[in] | i | index of the first extremity of the bisector in delaunay . |
[in] | j | index of the first extremity of the bisector in delaunay . |
[in] | symbolic | if true, symbolic representation of the vertices is generated. |
[in] | t1 | a triangle adjacent to the border of the conflict zone from inside. |
[in] | t1ebord | the edge along which t is adjacent to the border of the conflict zone. |
[in] | v_in | index of the new vertex |
Definition at line 887 of file generic_RVD_cell.h.
|
inline |
Gets the id of a vertex.
Each vertex of a ConvexCell has an id, that can be used to maintain the correspondence with a facet in the Mesh.
Definition at line 616 of file generic_RVD_cell.h.
|
inline |
Gets one of the triangles incident to a vertex.
The information is cached and reconstructed whenever the v_to_t_dirty_ flag is positioned.
[in] | v | index of the vertex |
v
Definition at line 519 of file generic_RVD_cell.h.