corrected bugs in Iterator
This commit is contained in:
parent
c1daa656fe
commit
e43cfa5f43
|
@ -64,7 +64,7 @@ class GeometricInterpolator{
|
||||||
public:
|
public:
|
||||||
typedef typename VertexType::ScalarType ScalarType;
|
typedef typename VertexType::ScalarType ScalarType;
|
||||||
static void Apply( const VertexType &a, const VertexType &b, ScalarType t, VertexType &res){
|
static void Apply( const VertexType &a, const VertexType &b, ScalarType t, VertexType &res){
|
||||||
assert (&a != &b);
|
/*assert (&a != &b);*/
|
||||||
res.P() = a.P()*(1-t) + b.P()*(t);
|
res.P() = a.P()*(1-t) + b.P()*(t);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -622,7 +622,15 @@ private:
|
||||||
bool over;
|
bool over;
|
||||||
public:
|
public:
|
||||||
Iterator(Pos& pos){
|
Iterator(Pos& pos){
|
||||||
start = cur = Pos(pos.F(), pos.E());
|
start =Pos(pos.F(), pos.E());
|
||||||
|
|
||||||
|
while((start.F()->IsD())||(!start.F()->IsF(start.E())))
|
||||||
|
{
|
||||||
|
int i = start.F()->FFi( start.E() );
|
||||||
|
start.F() = start.F()->FFp( start.E() );
|
||||||
|
start.E() = (i+2)%3;
|
||||||
|
}
|
||||||
|
cur=start;
|
||||||
over = false;
|
over = false;
|
||||||
}
|
}
|
||||||
bool End() const {
|
bool End() const {
|
||||||
|
@ -644,6 +652,28 @@ public:
|
||||||
if (cur.F()==start.F()) over=true;
|
if (cur.F()==start.F()) over=true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// void operator ++ () {
|
||||||
|
// int i = cur.F()->FFi( cur.E() );
|
||||||
|
// cur.F() = cur.F()->FFp( cur.E() );
|
||||||
|
// cur.E() = (i+2)%3;
|
||||||
|
// if (cur.F()->IsF(cur.E())) {
|
||||||
|
// //// jump over faux diag
|
||||||
|
// int i = cur.F()->FFi( cur.E() );
|
||||||
|
// cur.F() = cur.F()->FFp( cur.E() );
|
||||||
|
// cur.E() = (i+2)%3;
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
// // jump over real edge
|
||||||
|
// //FaceType *f =cur.F()->FFp( cur.E() );
|
||||||
|
// //if (f==cur.F()) over=true; // border found
|
||||||
|
// //cur.E() = (cur.F()->FFi( cur.E() ) +2 )%3;
|
||||||
|
// //cur.F() = f;
|
||||||
|
|
||||||
|
// if (cur.F()==start.F()) over=true;
|
||||||
|
|
||||||
|
//}
|
||||||
|
|
||||||
Pos GetPos(){
|
Pos GetPos(){
|
||||||
return cur;
|
return cur;
|
||||||
}
|
}
|
||||||
|
@ -742,9 +772,9 @@ typedef enum { VALENCY_FLAGS = 24 } ___; // this bit and the 4 successive one ar
|
||||||
|
|
||||||
static void SetValency(VertexType *v, int n){
|
static void SetValency(VertexType *v, int n){
|
||||||
//v->Q() = n;
|
//v->Q() = n;
|
||||||
assert(n>=0 && n<=31);
|
/* assert(n>=0 && n<=31);
|
||||||
v->Flags()&= ~(31<<VALENCY_FLAGS);
|
v->Flags()&= ~(31<<VALENCY_FLAGS);
|
||||||
v->Flags()|= n<<VALENCY_FLAGS;
|
v->Flags()|= n<<VALENCY_FLAGS;*/
|
||||||
}
|
}
|
||||||
|
|
||||||
static int GetValency(const VertexType *v){
|
static int GetValency(const VertexType *v){
|
||||||
|
@ -753,19 +783,19 @@ static int GetValency(const VertexType *v){
|
||||||
}
|
}
|
||||||
|
|
||||||
static void IncreaseValency(VertexType *v, int dv=1){
|
static void IncreaseValency(VertexType *v, int dv=1){
|
||||||
#ifdef NDEBUG
|
//#ifdef NDEBUG
|
||||||
v->Flags() += dv<<VALENCY_FLAGS;
|
// v->Flags() += dv<<VALENCY_FLAGS;
|
||||||
#else
|
//#else
|
||||||
SetValency( v, GetValency(v)+dv );
|
// SetValency( v, GetValency(v)+dv );
|
||||||
#endif
|
//#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void DecreaseValency(VertexType *v, int dv=1){
|
static void DecreaseValency(VertexType *v, int dv=1){
|
||||||
#ifdef NDEBUG
|
//#ifdef NDEBUG
|
||||||
v->Flags() -= dv<<VALENCY_FLAGS;
|
// v->Flags() -= dv<<VALENCY_FLAGS;
|
||||||
#else
|
//#else
|
||||||
SetValency( v, GetValency(v)-dv );
|
// SetValency( v, GetValency(v)-dv );
|
||||||
#endif
|
//#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void UpdateValencyInFlags(MeshType& m){
|
static void UpdateValencyInFlags(MeshType& m){
|
||||||
|
|
Loading…
Reference in New Issue