Prusa Slicer 2.6.0
Loading...
Searching...
No Matches
igl::HalfEdgeIterator< DerivedF, DerivedFF, DerivedFFi > Class Template Reference

#include <src/libigl/igl/HalfEdgeIterator.h>

+ Collaboration diagram for igl::HalfEdgeIterator< DerivedF, DerivedFF, DerivedFFi >:

Public Member Functions

IGL_INLINE HalfEdgeIterator (const Eigen::PlainObjectBase< DerivedF > &_F, const Eigen::PlainObjectBase< DerivedFF > &_FF, const Eigen::PlainObjectBase< DerivedFFi > &_FFi, int _fi, int _ei, bool _reverse=false)
 
IGL_INLINE void flipF ()
 
IGL_INLINE void flipE ()
 
IGL_INLINE void flipV ()
 
IGL_INLINE bool isBorder ()
 
IGL_INLINE bool NextFE ()
 
IGL_INLINE int Vi ()
 
IGL_INLINE int Fi ()
 
IGL_INLINE int Ei ()
 
IGL_INLINE bool operator== (HalfEdgeIterator &p2)
 

Private Attributes

int fi
 
int ei
 
bool reverse
 
const Eigen::PlainObjectBase< DerivedF > & F
 
const Eigen::PlainObjectBase< DerivedFF > & FF
 
const Eigen::PlainObjectBase< DerivedFFi > & FFi
 

Detailed Description

template<typename DerivedF, typename DerivedFF, typename DerivedFFi>
class igl::HalfEdgeIterator< DerivedF, DerivedFF, DerivedFFi >

Constructor & Destructor Documentation

◆ HalfEdgeIterator()

template<typename DerivedF , typename DerivedFF , typename DerivedFFi >
IGL_INLINE igl::HalfEdgeIterator< DerivedF, DerivedFF, DerivedFFi >::HalfEdgeIterator ( const Eigen::PlainObjectBase< DerivedF > &  _F,
const Eigen::PlainObjectBase< DerivedFF > &  _FF,
const Eigen::PlainObjectBase< DerivedFFi > &  _FFi,
int  _fi,
int  _ei,
bool  _reverse = false 
)
20: fi(_fi), ei(_ei), reverse(_reverse), F(_F), FF(_FF), FFi(_FFi)
21{}
bool reverse
Definition HalfEdgeIterator.h:100
int fi
Definition HalfEdgeIterator.h:98
const Eigen::PlainObjectBase< DerivedFF > & FF
Definition HalfEdgeIterator.h:104
int ei
Definition HalfEdgeIterator.h:99
const Eigen::PlainObjectBase< DerivedF > & F
Definition HalfEdgeIterator.h:103
const Eigen::PlainObjectBase< DerivedFFi > & FFi
Definition HalfEdgeIterator.h:105

Member Function Documentation

◆ Ei()

template<typename DerivedF , typename DerivedFF , typename DerivedFFi >
IGL_INLINE int igl::HalfEdgeIterator< DerivedF, DerivedFF, DerivedFFi >::Ei
120{
121 return ei;
122}

Referenced by igl::MeshCutterMini< DerivedV, DerivedF, VFType, DerivedTT, DerivedC >::FindInitialPos(), and igl::MeshCutterMini< DerivedV, DerivedF, VFType, DerivedTT, DerivedC >::MapIndexes().

+ Here is the caller graph for this function:

◆ Fi()

template<typename DerivedF , typename DerivedFF , typename DerivedFFi >
IGL_INLINE int igl::HalfEdgeIterator< DerivedF, DerivedFF, DerivedFFi >::Fi
113{
114 return fi;
115}

Referenced by igl::MeshCutterMini< DerivedV, DerivedF, VFType, DerivedTT, DerivedC >::FindInitialPos(), and igl::MeshCutterMini< DerivedV, DerivedF, VFType, DerivedTT, DerivedC >::MapIndexes().

+ Here is the caller graph for this function:

◆ flipE()

template<typename DerivedF , typename DerivedFF , typename DerivedFFi >
IGL_INLINE void igl::HalfEdgeIterator< DerivedF, DerivedFF, DerivedFFi >::flipE
41{
42 if (!reverse)
43 ei = (ei+2)%3; // ei-1
44 else
45 ei = (ei+1)%3;
46
48}

◆ flipF()

template<typename DerivedF , typename DerivedFF , typename DerivedFFi >
IGL_INLINE void igl::HalfEdgeIterator< DerivedF, DerivedFF, DerivedFFi >::flipF
25{
26 if (isBorder())
27 return;
28
29 int fin = (FF)(fi,ei);
30 int ein = (FFi)(fi,ei);
31
32 fi = fin;
33 ei = ein;
35}
IGL_INLINE bool isBorder()
Definition HalfEdgeIterator.cpp:58

◆ flipV()

template<typename DerivedF , typename DerivedFF , typename DerivedFFi >
IGL_INLINE void igl::HalfEdgeIterator< DerivedF, DerivedFF, DerivedFFi >::flipV
53{
55}

◆ isBorder()

template<typename DerivedF , typename DerivedFF , typename DerivedFFi >
IGL_INLINE bool igl::HalfEdgeIterator< DerivedF, DerivedFF, DerivedFFi >::isBorder
59{
60 return (FF)(fi,ei) == -1;
61}

◆ NextFE()

template<typename DerivedF , typename DerivedFF , typename DerivedFFi >
IGL_INLINE bool igl::HalfEdgeIterator< DerivedF, DerivedFF, DerivedFFi >::NextFE

Returns the next edge skipping the border


/\ c | b /\ / \ | / \ / d \ | / a \ /______|/______\ v In this example, if a and d are of-border and the pos is iterating counterclockwise, this method iterate through the faces incident on vertex v, producing the sequence a, b, c, d, a, b, c, ...

76{
77 if ( isBorder() ) // we are on a border
78 {
79 do
80 {
81 flipF();
82 flipE();
83 } while (!isBorder());
84 flipE();
85 return false;
86 }
87 else
88 {
89 flipF();
90 flipE();
91 return true;
92 }
93}
IGL_INLINE void flipF()
Definition HalfEdgeIterator.cpp:24
IGL_INLINE void flipE()
Definition HalfEdgeIterator.cpp:40

Referenced by igl::MeshCutterMini< DerivedV, DerivedF, VFType, DerivedTT, DerivedC >::FindInitialPos(), and igl::MeshCutterMini< DerivedV, DerivedF, VFType, DerivedTT, DerivedC >::MapIndexes().

+ Here is the caller graph for this function:

◆ operator==()

template<typename DerivedF , typename DerivedFF , typename DerivedFFi >
IGL_INLINE bool igl::HalfEdgeIterator< DerivedF, DerivedFF, DerivedFFi >::operator== ( HalfEdgeIterator< DerivedF, DerivedFF, DerivedFFi > &  p2)

◆ Vi()

template<typename DerivedF , typename DerivedFF , typename DerivedFFi >
IGL_INLINE int igl::HalfEdgeIterator< DerivedF, DerivedFF, DerivedFFi >::Vi
98{
99 assert(fi >= 0);
100 assert(fi < F.rows());
101 assert(ei >= 0);
102 assert(ei <= 2);
103
104 if (!reverse)
105 return (F)(fi,ei);
106 else
107 return (F)(fi,(ei+1)%3);
108}
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index rows() const
Definition PlainObjectBase.h:151

Member Data Documentation

◆ ei

template<typename DerivedF , typename DerivedFF , typename DerivedFFi >
int igl::HalfEdgeIterator< DerivedF, DerivedFF, DerivedFFi >::ei
private

◆ F

template<typename DerivedF , typename DerivedFF , typename DerivedFFi >
const Eigen::PlainObjectBase<DerivedF>& igl::HalfEdgeIterator< DerivedF, DerivedFF, DerivedFFi >::F
private

◆ FF

template<typename DerivedF , typename DerivedFF , typename DerivedFFi >
const Eigen::PlainObjectBase<DerivedFF>& igl::HalfEdgeIterator< DerivedF, DerivedFF, DerivedFFi >::FF
private

◆ FFi

template<typename DerivedF , typename DerivedFF , typename DerivedFFi >
const Eigen::PlainObjectBase<DerivedFFi>& igl::HalfEdgeIterator< DerivedF, DerivedFF, DerivedFFi >::FFi
private

◆ fi

template<typename DerivedF , typename DerivedFF , typename DerivedFFi >
int igl::HalfEdgeIterator< DerivedF, DerivedFF, DerivedFFi >::fi
private

◆ reverse

template<typename DerivedF , typename DerivedFF , typename DerivedFFi >
bool igl::HalfEdgeIterator< DerivedF, DerivedFF, DerivedFFi >::reverse
private

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