Geogram
Version 1.9.1
A programming library of geometric algorithms
|
Represents the set of radial halfedge bundles. More...
#include <geogram/mesh/mesh_surface_intersection.h>
Public Types | |
typedef std::pair< index_t, index_t > | ChartPos |
Indicates where to find a chart in a bundle. More... | |
Public Member Functions | |
RadialBundles (MeshSurfaceIntersection &I) | |
RadialBundles constructor. More... | |
void | initialize () |
Initializes the structure. More... | |
index_t | nb () const |
Gets the number of bundles. | |
index_as_iterator | begin () const |
used by range-based for More... | |
index_as_iterator | end () const |
used by range-based for More... | |
index_t | nb_halfedges (index_t bndl) const |
Gets the number of halfedges in a bundle. More... | |
index_t | halfedge (index_t bndl, index_t li) const |
Gets a halfedge in a bundle from local index. More... | |
void | set_halfedge (index_t bndl, index_t li, index_t h) |
Sets a halfedge in a bundle. More... | |
index_ptr_range | halfedges (index_t bndl) |
gets the halfedges in a bundle More... | |
const_index_ptr_range | halfedges (index_t bndl) const |
gets the halfedges in a bundle More... | |
index_t | vertex (index_t bndl, index_t lv) const |
gets one of the vertices at the two extremities of a bundle More... | |
index_t | vertex_first_bundle (index_t v) const |
gets the first bundle starting from a vertex More... | |
index_t | next_around_vertex (index_t bndl) const |
gets the next bundle around a vertex More... | |
index_t | nb_bundles_around_vertex (index_t v) const |
gets the bumber of bundles around a vertex More... | |
index_t | opposite (index_t bndl) |
gets the opposite bundle More... | |
index_t | prev_along_polyline (index_t bndl) |
gets the predecessor of a bundle along its polyline More... | |
index_t | next_along_polyline (index_t bndl) |
gets the successor of a bundle along its polyline More... | |
bool | radial_sort (index_t bndl, RadialSort &RS) |
Sorts the halfedges of the bundle in-place. More... | |
void | set_sorted_halfedges (index_t bndl, const vector< index_t > &halfedges) |
Sets the halfedges of a bundle. More... | |
void | get_sorted_incident_charts (index_t bndl, vector< ChartPos > &chart_pos) |
Gets the sorted list of charts around bundle. More... | |
bool | is_sorted (index_t bndl) const |
Public Attributes | |
MeshSurfaceIntersection & | I_ |
Mesh & | mesh_ |
Attribute< index_t > | facet_chart_ |
vector< index_t > | H_ |
vector< index_t > | bndl_start_ |
vector< index_t > | v_first_bndl_ |
vector< index_t > | bndl_next_around_v_ |
vector< bool > | bndl_is_sorted_ |
Represents the set of radial halfedge bundles.
A Radial bundle corresponds to the set of halfedges connecting the same pair of vertices (and in the same order).
Definition at line 757 of file mesh_surface_intersection.h.
typedef std::pair<index_t, index_t> GEO::MeshSurfaceIntersection::RadialBundles::ChartPos |
Indicates where to find a chart in a bundle.
the first index is a chart index, and the second index indicates which halfedge in a bundle is incident to that chart.
Definition at line 1009 of file mesh_surface_intersection.h.
|
inline |
RadialBundles constructor.
[in] | I | a reference to the MeshSurfaceIntersectionx |
Definition at line 764 of file mesh_surface_intersection.h.
|
inline |
used by range-based for
Definition at line 784 of file mesh_surface_intersection.h.
|
inline |
used by range-based for
Definition at line 792 of file mesh_surface_intersection.h.
void GEO::MeshSurfaceIntersection::RadialBundles::get_sorted_incident_charts | ( | index_t | bndl, |
vector< ChartPos > & | chart_pos | ||
) |
Gets the sorted list of charts around bundle.
[in] | bndl | a bundle |
[out] | chart_pos | a list of (chart id, halfedge index) couples, sorted by chart id, and where the halfedge index is the original index in the bundle before sorting |
|
inline |
Gets a halfedge in a bundle from local index.
[in] | bndl | the bundle |
[in] | li | the local index of the halfedge in the bundle, in [0 .. nb_halfedges(bndl)-1] |
Definition at line 813 of file mesh_surface_intersection.h.
|
inline |
gets the halfedges in a bundle
[in] | bndl | bundle index |
Definition at line 837 of file mesh_surface_intersection.h.
|
inline |
gets the halfedges in a bundle
[in] | bndl | bundle index |
Definition at line 848 of file mesh_surface_intersection.h.
void GEO::MeshSurfaceIntersection::RadialBundles::initialize | ( | ) |
Initializes the structure.
Needs to be called before any other function
|
inline |
gets the bumber of bundles around a vertex
[in] | v | the vertex |
v
Definition at line 894 of file mesh_surface_intersection.h.
Gets the number of halfedges in a bundle.
[in] | bndl | the bundle |
bndl
Definition at line 801 of file mesh_surface_intersection.h.
gets the successor of a bundle along its polyline
Definition at line 943 of file mesh_surface_intersection.h.
|
inline |
gets the next bundle around a vertex
[in] | bndl | the bundle |
bundles starting from the same vertex are chained
bndl
, or NO_INDEX if there is no such bundle Definition at line 885 of file mesh_surface_intersection.h.
gets the opposite bundle
[in] | bndl | a bundle index |
Definition at line 912 of file mesh_surface_intersection.h.
gets the predecessor of a bundle along its polyline
Definition at line 922 of file mesh_surface_intersection.h.
|
inline |
Sorts the halfedges of the bundle in-place.
[in] | bndl | the bundle |
[in] | RS | a RadialSort structure (that caches some information) |
true | if radial sort was successful |
false | otherwise (may happen with expansion_nt) |
Definition at line 967 of file mesh_surface_intersection.h.
|
inline |
Sets a halfedge in a bundle.
[in] | bndl | the bundle |
[in] | li | the local index of the halfedge in the bunble, in [0 .. nb_halfedges(bndl)-1] |
[in] | h | the new halfedge |
Definition at line 826 of file mesh_surface_intersection.h.
|
inline |
Sets the halfedges of a bundle.
Used when radial sorting can be replaced with combinatorial propagation.
[in] | bndl | a bundle |
[in] | halfedges | the sorted list of the halfedges in the bundle |
Definition at line 994 of file mesh_surface_intersection.h.
|
inline |
gets one of the vertices at the two extremities of a bundle
[in] | bndl | bundle index |
[in] | lv | local vertex index, in {0,1} |
lv
= 0 the source vertex, if lv
= 1 the destination vertex Definition at line 861 of file mesh_surface_intersection.h.
gets the first bundle starting from a vertex
[in] | v | the vertex |
bundles starting from the same vertex are chained
v
, or NO_INDEX if there is no such bundle Definition at line 874 of file mesh_surface_intersection.h.