cheshirekow
v0.1.0
|
The induced subcomplex of a facet between two simplices is the set of all simplices in the triangulation whose vertices are composed of those from the two simplices in question. More...
#include <edelsbrunner96/induced_subcomplex.h>
Classes | |
struct | BreadthFirstNode |
We do a breadthfirst search for simplices in the induced subcomplex. This data structure is what we queue in the search. More... | |
Public Types | |
typedef Traits::PointRef | PointRef |
typedef Traits::Scalar | Scalar |
typedef Traits::Simplex | Simplex |
typedef Traits::SimplexRef | SimplexRef |
typedef Traits::Storage | Storage |
Public Member Functions | |
void | Build (Storage &storage) |
Fill the induced simplex by breadth-first search of the neighborhood about s[0] and s[1]. More... | |
uint8_t | FindIndexOfPeakVertex (Simplex &s) |
Given a simplex s which borders the hull of V (i.e. s shares a facet with hull(V)), then find the vertex of s which is not in V, and return it's index in S.V;. More... | |
void | Flip (Storage &storage) |
Flip the subcomplex. More... | |
void | Init (Storage &storage, SimplexRef s0_ref, SimplexRef s1_ref) |
Initialize the data structure with the two simplices and build the vertex set for the common facet. More... | |
void | Init (Storage &storage, const std::array< SimplexRef, 2 > &s) |
Initialize the data structure with the two simplices and build the vertex set for the common facet. More... | |
bool | IsFlippable (Storage &storage) |
Return true if the facet is flippable. More... | |
bool | IsLocallyRegular (Storage &storage) |
Return true if the facet is locally regular. More... | |
Public Attributes | |
std::array< PointRef, 2 > | e |
the two vertices in V which are not part of the facet. e[i] is the vertex missing from s[i] More... | |
std::array< PointRef, Traits::NDim > | f |
the vertices of facet for which this subcomplex is induced. More... | |
std::array< SimplexRef, Traits::NDim+2 > | S |
if S[i] is not null then it is the simplex in the triangulation composed of all the vertices in V except for the i'th More... | |
std::array< SimplexRef, 2 > | s |
the two simplices bounding the facet More... | |
std::array< PointRef, Traits::NDim+2 > | V |
the (sorted) vertices of the subcomplex More... | |
The induced subcomplex of a facet between two simplices is the set of all simplices in the triangulation whose vertices are composed of those from the two simplices in question.
The concept is confusing at first, but this ascii art may help:
\ \ \ \ \ v3 |\\ s4 | \ \ | \ \ s5 | \ \ | \ s1 \ | v1\___________\ ________________________ | / / v2 | s2 / s0 / | / / | / / | / / v0|// s3 / / / / /
In 2d a "simplex" is a triangle, and a "facet" is a line segment. Note the facet between simplices s0 and s1 (the line segment v1 -> v2). If we take all the vertices of the two simplices that border that facet (i.e. union of the vertices of s0 and s1), we get the set {v[0], v[1], v[2], v[3]}. The induced subcomplex of this facet is the set of all simplices whose three vertices are all found in that set. Namely, in this case, the induced subcomplex is the set {s0, s1, s2}.
Definition at line 74 of file induced_subcomplex.h.
typedef Traits::PointRef edelsbrunner96::InducedSubcomplex< Traits >::PointRef |
Definition at line 78 of file induced_subcomplex.h.
typedef Traits::Scalar edelsbrunner96::InducedSubcomplex< Traits >::Scalar |
Definition at line 76 of file induced_subcomplex.h.
typedef Traits::Simplex edelsbrunner96::InducedSubcomplex< Traits >::Simplex |
Definition at line 80 of file induced_subcomplex.h.
typedef Traits::SimplexRef edelsbrunner96::InducedSubcomplex< Traits >::SimplexRef |
Definition at line 79 of file induced_subcomplex.h.
typedef Traits::Storage edelsbrunner96::InducedSubcomplex< Traits >::Storage |
Definition at line 77 of file induced_subcomplex.h.
void edelsbrunner96::InducedSubcomplex< Traits >::Build | ( | Storage & | storage | ) |
Fill the induced simplex by breadth-first search of the neighborhood about s[0] and s[1].
Definition at line 88 of file induced_subcomplex.hpp.
uint8_t edelsbrunner96::InducedSubcomplex< Traits >::FindIndexOfPeakVertex | ( | typename Traits::Simplex & | s | ) |
Given a simplex s which borders the hull of V (i.e. s shares a facet with hull(V)), then find the vertex of s which is not in V, and return it's index in S.V;.
Definition at line 247 of file induced_subcomplex.hpp.
void edelsbrunner96::InducedSubcomplex< Traits >::Flip | ( | Storage & | storage | ) |
Flip the subcomplex.
Definition at line 292 of file induced_subcomplex.hpp.
void edelsbrunner96::InducedSubcomplex< Traits >::Init | ( | Storage & | storage, |
SimplexRef | s0_ref, | ||
SimplexRef | s1_ref | ||
) |
Initialize the data structure with the two simplices and build the vertex set for the common facet.
Definition at line 41 of file induced_subcomplex.hpp.
void edelsbrunner96::InducedSubcomplex< Traits >::Init | ( | Storage & | storage, |
const std::array< SimplexRef, 2 > & | s | ||
) |
Initialize the data structure with the two simplices and build the vertex set for the common facet.
Definition at line 67 of file induced_subcomplex.hpp.
bool edelsbrunner96::InducedSubcomplex< Traits >::IsFlippable | ( | Storage & | storage | ) |
Return true if the facet is flippable.
A facet is flippable if all reflex edges are filled by a simplex in the induced subcomplex.
Definition at line 165 of file induced_subcomplex.hpp.
bool edelsbrunner96::InducedSubcomplex< Traits >::IsLocallyRegular | ( | Storage & | storage | ) |
Return true if the facet is locally regular.
Definition at line 73 of file induced_subcomplex.hpp.
std::array<PointRef, 2> edelsbrunner96::InducedSubcomplex< Traits >::e |
the two vertices in V which are not part of the facet. e[i] is the vertex missing from s[i]
Definition at line 106 of file induced_subcomplex.h.
std::array<PointRef, Traits::NDim> edelsbrunner96::InducedSubcomplex< Traits >::f |
the vertices of facet for which this subcomplex is induced.
Definition at line 102 of file induced_subcomplex.h.
std::array<SimplexRef, Traits::NDim + 2> edelsbrunner96::InducedSubcomplex< Traits >::S |
if S[i] is not null then it is the simplex in the triangulation composed of all the vertices in V except for the i'th
Definition at line 99 of file induced_subcomplex.h.
std::array<SimplexRef, 2> edelsbrunner96::InducedSubcomplex< Traits >::s |
the two simplices bounding the facet
Definition at line 109 of file induced_subcomplex.h.
std::array<PointRef, Traits::NDim + 2> edelsbrunner96::InducedSubcomplex< Traits >::V |
the (sorted) vertices of the subcomplex
Definition at line 95 of file induced_subcomplex.h.