cheshirekow  v0.1.0
edelsbrunner96::InducedSubcomplex< Traits > Class Template Reference

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...
 

Detailed Description

template<typename Traits>
class edelsbrunner96::InducedSubcomplex< Traits >

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.

Member Typedef Documentation

template<typename Traits>
typedef Traits::PointRef edelsbrunner96::InducedSubcomplex< Traits >::PointRef

Definition at line 78 of file induced_subcomplex.h.

template<typename Traits>
typedef Traits::Scalar edelsbrunner96::InducedSubcomplex< Traits >::Scalar

Definition at line 76 of file induced_subcomplex.h.

template<typename Traits>
typedef Traits::Simplex edelsbrunner96::InducedSubcomplex< Traits >::Simplex

Definition at line 80 of file induced_subcomplex.h.

template<typename Traits>
typedef Traits::SimplexRef edelsbrunner96::InducedSubcomplex< Traits >::SimplexRef

Definition at line 79 of file induced_subcomplex.h.

template<typename Traits>
typedef Traits::Storage edelsbrunner96::InducedSubcomplex< Traits >::Storage

Definition at line 77 of file induced_subcomplex.h.

Member Function Documentation

template<typename Traits >
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.

template<typename Traits >
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.

template<typename Traits >
void edelsbrunner96::InducedSubcomplex< Traits >::Flip ( Storage storage)

Flip the subcomplex.

Definition at line 292 of file induced_subcomplex.hpp.

template<typename Traits >
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.

template<typename Traits >
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.

template<typename Traits >
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.

template<class Traits >
bool edelsbrunner96::InducedSubcomplex< Traits >::IsLocallyRegular ( Storage storage)

Return true if the facet is locally regular.

Definition at line 73 of file induced_subcomplex.hpp.

Member Data Documentation

template<typename Traits>
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.

template<typename Traits>
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.

template<typename Traits>
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.

template<typename Traits>
std::array<SimplexRef, 2> edelsbrunner96::InducedSubcomplex< Traits >::s

the two simplices bounding the facet

Definition at line 109 of file induced_subcomplex.h.

template<typename Traits>
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.


The documentation for this class was generated from the following files: