added NextNotFaux function
This commit is contained in:
parent
4fe40ecef5
commit
c3beef6091
|
@ -97,9 +97,9 @@ public:
|
|||
int E() const { return z; }
|
||||
FaceType * F() const { return f; }
|
||||
|
||||
// Returns the face index of the vertex inside the face.
|
||||
// Note that this is DIFFERENT from using the z member that denotes the edge index inside the face.
|
||||
// It should holds that Vind != (z+1)%3 && Vind == z || Vind = z+2%3
|
||||
// Returns the face index of the vertex inside the face.
|
||||
// Note that this is DIFFERENT from using the z member that denotes the edge index inside the face.
|
||||
// It should holds that Vind != (z+1)%3 && Vind == z || Vind = z+2%3
|
||||
int VInd()
|
||||
{
|
||||
for(int i = 0; i < f->VN(); ++i) if(v==f->V(i)) return i;
|
||||
|
@ -224,9 +224,9 @@ public:
|
|||
/// return the face that it should have if we make FlipF;
|
||||
FaceType *FFlip() const
|
||||
{
|
||||
// assert( f->FFp(z)->FFp(f->FFi(z))==f );
|
||||
// assert(f->V(f->Prev(z))!=v);
|
||||
// assert(f->V(f->Next(z))==v || f->V((z+0)%f->VN())==v);
|
||||
// assert( f->FFp(z)->FFp(f->FFi(z))==f );
|
||||
// assert(f->V(f->Prev(z))!=v);
|
||||
// assert(f->V(f->Next(z))==v || f->V((z+0)%f->VN())==v);
|
||||
FaceType *nf=f->FFp(z);
|
||||
return nf;
|
||||
}
|
||||
|
@ -263,12 +263,39 @@ public:
|
|||
assert(f->FFp(z)==f); // f is border along j
|
||||
}
|
||||
|
||||
/// Finds the next half-edge border
|
||||
void NextNotFaux( )
|
||||
{
|
||||
assert(f->V(f->Prev(z))!=v && (f->V(f->Next(z))==v || f->V(z)==v));
|
||||
//assert(f->FFp(z)==f); // f is border along j
|
||||
// Si deve cambiare faccia intorno allo stesso vertice v
|
||||
//finche' non si trova una faccia di bordo.
|
||||
do
|
||||
{
|
||||
FlipE();
|
||||
if (IsFaux()) FlipF();
|
||||
}
|
||||
while(IsFaux());
|
||||
|
||||
// L'edge j e' di bordo e deve contenere v
|
||||
assert((!IsFaux()) &&( f->V(z)==v || f->V(f->Next(z))==v ));
|
||||
|
||||
FlipV();
|
||||
assert(f->V(f->Prev(z))!=v && (f->V(f->Next(z))==v || f->V(z)==v));
|
||||
//assert(f->FFp(z)==f); // f is border along j
|
||||
}
|
||||
|
||||
/// Checks if the half-edge is of border
|
||||
bool IsBorder()
|
||||
{
|
||||
return face::IsBorder(*f,z);
|
||||
}
|
||||
|
||||
bool IsFaux()
|
||||
{
|
||||
return (f->IsF(z));
|
||||
}
|
||||
|
||||
bool IsManifold()
|
||||
{
|
||||
return face::IsManifold(*f,z);
|
||||
|
@ -335,7 +362,7 @@ public:
|
|||
}
|
||||
|
||||
void Assert()
|
||||
#ifdef _DEBUG
|
||||
#ifdef _DEBUG
|
||||
{
|
||||
FaceType ht=*this;
|
||||
ht.FlipF();
|
||||
|
@ -350,12 +377,12 @@ public:
|
|||
ht.FlipV();
|
||||
assert(ht==*this);
|
||||
}
|
||||
#else
|
||||
#else
|
||||
{}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
protected:
|
||||
protected:
|
||||
void CheckIncidentFaces(int & count, bool & on_border)
|
||||
{
|
||||
PosType ht = *this;
|
||||
|
|
Loading…
Reference in New Issue