Commit 4797d495 authored by Sylvain Thery's avatar Sylvain Thery

replace alpha1 by phi2_1 and alpha_1 by phi12 in 2D Algorithms

parent c6dfffb5
...@@ -103,7 +103,7 @@ void test_compact_map(const std::string& name) ...@@ -103,7 +103,7 @@ void test_compact_map(const std::string& name)
do // mark all edges incident to vertex; do // mark all edges incident to vertex;
{ {
dm.markOrbit( EDGE, e); dm.markOrbit( EDGE, e);
e = myMap.alpha1(e); e = myMap.phi2_1(e);
}while (e!=d); }while (e!=d);
} }
i++; i++;
......
...@@ -38,17 +38,17 @@ void mergeVertex(typename PFP::MAP& map, const typename PFP::TVEC3& positions, D ...@@ -38,17 +38,17 @@ void mergeVertex(typename PFP::MAP& map, const typename PFP::TVEC3& positions, D
Dart dd; Dart dd;
do do
{ {
dd = map.alpha1(d); dd = map.phi2_1(d);
map.removeEdgeFromVertex(dd); map.removeEdgeFromVertex(dd);
Dart ee = e; Dart ee = e;
do do
{ {
if(Geom::testOrientation2D(positions[map.phi1(dd)],positions[ee],positions[map.phi1(ee)])!=Geom::RIGHT if(Geom::testOrientation2D(positions[map.phi1(dd)],positions[ee],positions[map.phi1(ee)])!=Geom::RIGHT
&& Geom::testOrientation2D(positions[map.phi1(dd)],positions[ee],positions[map.phi1(map.alpha1(ee))])==Geom::RIGHT) && Geom::testOrientation2D(positions[map.phi1(dd)],positions[ee],positions[map.phi1(map.phi2_1(ee))])==Geom::RIGHT)
{ {
break; break;
} }
ee = map.alpha1(ee); ee = map.phi2_1(ee);
} while(ee != e); } while(ee != e);
map.insertEdgeInVertex(ee,dd); map.insertEdgeInVertex(ee,dd);
} while(dd!=d); } while(dd!=d);
......
...@@ -56,18 +56,18 @@ bool edgeCanCollapse(typename PFP::MAP& map, Dart d, AttributeHandler<unsigned i ...@@ -56,18 +56,18 @@ bool edgeCanCollapse(typename PFP::MAP& map, Dart d, AttributeHandler<unsigned i
unsigned int vu1[32]; // pas de vector mais un tableau (find a la main, mais pas d'allocation par reserve) unsigned int vu1[32]; // pas de vector mais un tableau (find a la main, mais pas d'allocation par reserve)
val_vd -= 3; // evite le -3 dans la boucle val_vd -= 3; // evite le -3 dans la boucle
val_vdd -= 3; val_vdd -= 3;
Dart vit1 = map.alpha1(map.alpha1(d)); Dart vit1 = map.phi2_1(map.phi2_1(d));
for (unsigned int i = 0; i< val_vd; ++i) for (unsigned int i = 0; i< val_vd; ++i)
{ {
unsigned int ve = map.getEmbedding(map.phi2(vit1),VERTEX); unsigned int ve = map.getEmbedding(map.phi2(vit1),VERTEX);
vu1[i] = ve; vu1[i] = ve;
vit1 = map.alpha1(vit1); vit1 = map.phi2_1(vit1);
} }
val_vd--; // pour le parcours avec while >=0 val_vd--; // pour le parcours avec while >=0
Dart vit2 = map.alpha1(map.alpha1(dd)); Dart vit2 = map.phi2_1(map.phi2_1(dd));
for (unsigned int i = 0; i< val_vdd; ++i) for (unsigned int i = 0; i< val_vdd; ++i)
{ {
unsigned int ve = map.getEmbedding(map.phi2(vit2),VERTEX); unsigned int ve = map.getEmbedding(map.phi2(vit2),VERTEX);
...@@ -79,7 +79,7 @@ bool edgeCanCollapse(typename PFP::MAP& map, Dart d, AttributeHandler<unsigned i ...@@ -79,7 +79,7 @@ bool edgeCanCollapse(typename PFP::MAP& map, Dart d, AttributeHandler<unsigned i
return false; return false;
--j; --j;
} }
vit2 = map.alpha1(vit2); vit2 = map.phi2_1(vit2);
} }
return true; return true;
...@@ -96,16 +96,16 @@ bool edgeCanCollapse(typename PFP::MAP& map, Dart d) ...@@ -96,16 +96,16 @@ bool edgeCanCollapse(typename PFP::MAP& map, Dart d)
int val_vd = 0 ; int val_vd = 0 ;
Dart tmp = d ; Dart tmp = d ;
do { ++val_vd ; tmp = map.alpha1(tmp) ; } while(tmp != d) ; do { ++val_vd ; tmp = map.phi2_1(tmp) ; } while(tmp != d) ;
int val_vdd = 0 ; int val_vdd = 0 ;
tmp = dd ; tmp = dd ;
do { ++val_vdd ; tmp = map.alpha1(tmp) ; } while(tmp != dd) ; do { ++val_vdd ; tmp = map.phi2_1(tmp) ; } while(tmp != dd) ;
int val_vdp = 0 ; int val_vdp = 0 ;
tmp = dp ; tmp = dp ;
do { ++val_vdp ; tmp = map.alpha1(tmp) ; } while(tmp != dp) ; do { ++val_vdp ; tmp = map.phi2_1(tmp) ; } while(tmp != dp) ;
int val_vddp = 0 ; int val_vddp = 0 ;
tmp = ddp ; tmp = ddp ;
do { ++val_vddp ; tmp = map.alpha1(tmp) ; } while(tmp != ddp) ; do { ++val_vddp ; tmp = map.phi2_1(tmp) ; } while(tmp != ddp) ;
if(val_vd + val_vdd < 8 || val_vd + val_vdd > 11 || val_vdp < 5 || val_vddp < 5) if(val_vd + val_vdd < 8 || val_vd + val_vdd > 11 || val_vdp < 5 || val_vddp < 5)
return false; return false;
...@@ -115,18 +115,18 @@ bool edgeCanCollapse(typename PFP::MAP& map, Dart d) ...@@ -115,18 +115,18 @@ bool edgeCanCollapse(typename PFP::MAP& map, Dart d)
unsigned int vu1[32]; // pas de vector mais un tableau (find a la main, mais pas d'allocation par reserve) unsigned int vu1[32]; // pas de vector mais un tableau (find a la main, mais pas d'allocation par reserve)
val_vd -= 3; // evite le -3 dans la boucle val_vd -= 3; // evite le -3 dans la boucle
val_vdd -= 3; val_vdd -= 3;
Dart vit1 = map.alpha1(map.alpha1(d)); Dart vit1 = map.phi2_1(map.phi2_1(d));
for (int i = 0; i < val_vd; ++i) for (int i = 0; i < val_vd; ++i)
{ {
unsigned int ve = map.getEmbedding(map.phi2(vit1),VERTEX); unsigned int ve = map.getEmbedding(map.phi2(vit1),VERTEX);
vu1[i] = ve; vu1[i] = ve;
vit1 = map.alpha1(vit1); vit1 = map.phi2_1(vit1);
} }
val_vd--; // pour le parcours avec while >=0 val_vd--; // pour le parcours avec while >=0
Dart vit2 = map.alpha1(map.alpha1(dd)); Dart vit2 = map.phi2_1(map.phi2_1(dd));
for (int i = 0; i < val_vdd; ++i) for (int i = 0; i < val_vdd; ++i)
{ {
unsigned int ve = map.getEmbedding(map.phi2(vit2),VERTEX); unsigned int ve = map.getEmbedding(map.phi2(vit2),VERTEX);
...@@ -138,7 +138,7 @@ bool edgeCanCollapse(typename PFP::MAP& map, Dart d) ...@@ -138,7 +138,7 @@ bool edgeCanCollapse(typename PFP::MAP& map, Dart d)
return false; return false;
--j; --j;
} }
vit2 = map.alpha1(vit2); vit2 = map.phi2_1(vit2);
} }
return true; return true;
......
...@@ -204,19 +204,19 @@ void EdgeSelector_Length<PFP>::updateAfterCollapse(Dart d2, Dart dd2) ...@@ -204,19 +204,19 @@ void EdgeSelector_Length<PFP>::updateAfterCollapse(Dart d2, Dart dd2)
{ {
initEdgeInfo(vit) ; // various optimizations are applied here by initEdgeInfo(vit) ; // various optimizations are applied here by
// treating differently : // treating differently :
Dart vit2 = m.alpha_1(m.phi1(vit)) ; // - edges for which the criteria must be recomputed Dart vit2 = m.phi12(m.phi1(vit)) ; // - edges for which the criteria must be recomputed
Dart stop = m.phi2(vit) ; // - edges that must be re-embedded Dart stop = m.phi2(vit) ; // - edges that must be re-embedded
do // - edges for which only the collapsibility must be re-tested do // - edges for which only the collapsibility must be re-tested
{ {
updateEdgeInfo(vit2, false) ; updateEdgeInfo(vit2, false) ;
updateEdgeInfo(m.phi1(vit2), false) ; updateEdgeInfo(m.phi1(vit2), false) ;
vit2 = m.alpha_1(vit2) ; vit2 = m.phi12(vit2) ;
} while(vit2 != stop) ; } while(vit2 != stop) ;
} }
else else
updateEdgeInfo(vit, true) ; updateEdgeInfo(vit, true) ;
vit = m.alpha1(vit) ; vit = m.phi2_1(vit) ;
} while(vit != d2) ; } while(vit != d2) ;
cur = edges.begin() ; // set the current edge to the first one cur = edges.begin() ; // set the current edge to the first one
...@@ -399,19 +399,19 @@ void EdgeSelector_QEM<PFP>::updateAfterCollapse(Dart d2, Dart dd2) ...@@ -399,19 +399,19 @@ void EdgeSelector_QEM<PFP>::updateAfterCollapse(Dart d2, Dart dd2)
{ {
initEdgeInfo(vit) ; // various optimizations are applied here by initEdgeInfo(vit) ; // various optimizations are applied here by
// treating differently : // treating differently :
Dart vit2 = m.alpha_1(m.phi1(vit)) ; // - edges for which the criteria must be recomputed Dart vit2 = m.phi12(m.phi1(vit)) ; // - edges for which the criteria must be recomputed
Dart stop = m.phi2(vit) ; // - edges that must be re-embedded Dart stop = m.phi2(vit) ; // - edges that must be re-embedded
do // - edges for which only the collapsibility must be re-tested do // - edges for which only the collapsibility must be re-tested
{ {
updateEdgeInfo(vit2, false) ; updateEdgeInfo(vit2, false) ;
updateEdgeInfo(m.phi1(vit2), false) ; updateEdgeInfo(m.phi1(vit2), false) ;
vit2 = m.alpha_1(vit2) ; vit2 = m.phi12(vit2) ;
} while(vit2 != stop) ; } while(vit2 != stop) ;
} }
else else
updateEdgeInfo(vit, true) ; updateEdgeInfo(vit, true) ;
vit = m.alpha1(vit) ; vit = m.phi2_1(vit) ;
} while(vit != d2) ; } while(vit != d2) ;
cur = edges.begin() ; // set the current edge to the first one cur = edges.begin() ; // set the current edge to the first one
...@@ -604,7 +604,7 @@ void EdgeSelector_QEMml<PFP>::recomputeQuadric(const Dart d, const bool recomput ...@@ -604,7 +604,7 @@ void EdgeSelector_QEMml<PFP>::recomputeQuadric(const Dart d, const bool recomput
do { do {
// Make step // Make step
dBack = this->m_map.phi2(dFront) ; dBack = this->m_map.phi2(dFront) ;
dFront = this->m_map.alpha1(dFront) ; dFront = this->m_map.phi2_1(dFront) ;
if (dBack != dFront) { // if dFront is no border if (dBack != dFront) { // if dFront is no border
quadric[d] += Quadric<REAL>(this->m_position[d],this->m_position[this->m_map.phi2(dFront)],this->m_position[dBack]) ; quadric[d] += Quadric<REAL>(this->m_position[d],this->m_position[this->m_map.phi2(dFront)],this->m_position[dBack]) ;
...@@ -633,16 +633,16 @@ void EdgeSelector_QEMml<PFP>::updateAfterCollapse(Dart d2, Dart dd2) ...@@ -633,16 +633,16 @@ void EdgeSelector_QEMml<PFP>::updateAfterCollapse(Dart d2, Dart dd2)
else // treating differently : else // treating differently :
updateEdgeInfo(vit, true) ; updateEdgeInfo(vit, true) ;
Dart vit2 = m.alpha_1(m.phi1(vit)) ; // - edges for which the criteria must be recomputed Dart vit2 = m.phi12(m.phi1(vit)) ; // - edges for which the criteria must be recomputed
Dart stop = m.phi2(vit) ; // - edges that must be re-embedded Dart stop = m.phi2(vit) ; // - edges that must be re-embedded
do // - edges for which only the collapsibility must be re-tested do // - edges for which only the collapsibility must be re-tested
{ {
updateEdgeInfo(vit2, true) ; updateEdgeInfo(vit2, true) ;
updateEdgeInfo(m.phi1(vit2), false) ; updateEdgeInfo(m.phi1(vit2), false) ;
vit2 = m.alpha_1(vit2) ; vit2 = m.phi12(vit2) ;
} while(vit2 != stop) ; } while(vit2 != stop) ;
vit = m.alpha1(vit) ; vit = m.phi2_1(vit) ;
} while(vit != d2) ; } while(vit != d2) ;
cur = edges.begin() ; // set the current edge to the first one cur = edges.begin() ; // set the current edge to the first one
...@@ -809,19 +809,19 @@ void EdgeSelector_Curvature<PFP>::updateAfterCollapse(Dart d2, Dart dd2) ...@@ -809,19 +809,19 @@ void EdgeSelector_Curvature<PFP>::updateAfterCollapse(Dart d2, Dart dd2)
{ {
initEdgeInfo(vit) ; // various optimizations are applied here by initEdgeInfo(vit) ; // various optimizations are applied here by
// treating differently : // treating differently :
Dart vit2 = m.alpha_1(m.phi1(vit)) ; // - edges for which the criteria must be recomputed Dart vit2 = m.phi12(m.phi1(vit)) ; // - edges for which the criteria must be recomputed
Dart stop = m.phi2(vit) ; // - edges that must be re-embedded Dart stop = m.phi2(vit) ; // - edges that must be re-embedded
do // - edges for which only the collapsibility must be re-tested do // - edges for which only the collapsibility must be re-tested
{ {
updateEdgeInfo(vit2, false) ; updateEdgeInfo(vit2, false) ;
updateEdgeInfo(m.phi1(vit2), false) ; updateEdgeInfo(m.phi1(vit2), false) ;
vit2 = m.alpha_1(vit2) ; vit2 = m.phi12(vit2) ;
} while(vit2 != stop) ; } while(vit2 != stop) ;
} }
else else
updateEdgeInfo(vit, true) ; updateEdgeInfo(vit, true) ;
vit = m.alpha1(vit) ; vit = m.phi2_1(vit) ;
} while(vit != d2) ; } while(vit != d2) ;
cur = edges.begin() ; // set the current edge to the first one cur = edges.begin() ; // set the current edge to the first one
...@@ -1013,19 +1013,19 @@ void EdgeSelector_MinDetail<PFP>::updateAfterCollapse(Dart d2, Dart dd2) ...@@ -1013,19 +1013,19 @@ void EdgeSelector_MinDetail<PFP>::updateAfterCollapse(Dart d2, Dart dd2)
{ {
initEdgeInfo(vit) ; // various optimizations are applied here by initEdgeInfo(vit) ; // various optimizations are applied here by
// treating differently : // treating differently :
Dart vit2 = m.alpha_1(m.phi1(vit)) ; // - edges for which the criteria must be recomputed Dart vit2 = m.phi12(m.phi1(vit)) ; // - edges for which the criteria must be recomputed
Dart stop = m.phi2(vit) ; // - edges that must be re-embedded Dart stop = m.phi2(vit) ; // - edges that must be re-embedded
do // - edges for which only the collapsibility must be re-tested do // - edges for which only the collapsibility must be re-tested
{ {
updateEdgeInfo(vit2, false) ; updateEdgeInfo(vit2, false) ;
updateEdgeInfo(m.phi1(vit2), false) ; updateEdgeInfo(m.phi1(vit2), false) ;
vit2 = m.alpha_1(vit2) ; vit2 = m.phi12(vit2) ;
} while(vit2 != stop) ; } while(vit2 != stop) ;
} }
else else
updateEdgeInfo(vit, true) ; updateEdgeInfo(vit, true) ;
vit = m.alpha1(vit) ; vit = m.phi2_1(vit) ;
} while(vit != d2) ; } while(vit != d2) ;
cur = edges.begin() ; // set the current edge to the first one cur = edges.begin() ; // set the current edge to the first one
......
...@@ -64,7 +64,7 @@ void Approximator_QEM<PFP>::approximate(Dart d) ...@@ -64,7 +64,7 @@ void Approximator_QEM<PFP>::approximate(Dart d)
{ {
Quadric<REAL> q(this->m_attrV[it], this->m_attrV[m.phi1(it)], this->m_attrV[m.phi_1(it)]) ; Quadric<REAL> q(this->m_attrV[it], this->m_attrV[m.phi1(it)], this->m_attrV[m.phi_1(it)]) ;
q1 += q ; q1 += q ;
it = m.alpha1(it) ; it = m.phi2_1(it) ;
} while(it != d) ; } while(it != d) ;
// compute the error quadric associated to v2 // compute the error quadric associated to v2
...@@ -73,7 +73,7 @@ void Approximator_QEM<PFP>::approximate(Dart d) ...@@ -73,7 +73,7 @@ void Approximator_QEM<PFP>::approximate(Dart d)
{ {
Quadric<REAL> q(this->m_attrV[it], this->m_attrV[m.phi1(it)], this->m_attrV[m.phi_1(it)]) ; Quadric<REAL> q(this->m_attrV[it], this->m_attrV[m.phi1(it)], this->m_attrV[m.phi_1(it)]) ;
q2 += q ; q2 += q ;
it = m.alpha1(it) ; it = m.phi2_1(it) ;
} while(it != dd) ; } while(it != dd) ;
} }
else // if the selector is QEM, use the error quadrics computed by the selector else // if the selector is QEM, use the error quadrics computed by the selector
...@@ -138,7 +138,7 @@ void Approximator_QEMhalfEdge<PFP>::approximate(Dart d) ...@@ -138,7 +138,7 @@ void Approximator_QEMhalfEdge<PFP>::approximate(Dart d)
{ {
Quadric<REAL> q(this->m_attrV[it], this->m_attrV[m.phi1(it)], this->m_attrV[m.phi_1(it)]) ; Quadric<REAL> q(this->m_attrV[it], this->m_attrV[m.phi1(it)], this->m_attrV[m.phi_1(it)]) ;
q1 += q ; q1 += q ;
it = m.alpha1(it) ; it = m.phi2_1(it) ;
} while(it != d) ; } while(it != d) ;
// compute the error quadric associated to v2 // compute the error quadric associated to v2
...@@ -147,7 +147,7 @@ void Approximator_QEMhalfEdge<PFP>::approximate(Dart d) ...@@ -147,7 +147,7 @@ void Approximator_QEMhalfEdge<PFP>::approximate(Dart d)
{ {
Quadric<REAL> q(this->m_attrV[it], this->m_attrV[m.phi1(it)], this->m_attrV[m.phi_1(it)]) ; Quadric<REAL> q(this->m_attrV[it], this->m_attrV[m.phi1(it)], this->m_attrV[m.phi_1(it)]) ;
q2 += q ; q2 += q ;
it = m.alpha1(it) ; it = m.phi2_1(it) ;
} while(it != dd) ; } while(it != dd) ;
} }
else // if the selector is QEM, use the error quadrics computed by the selector else // if the selector is QEM, use the error quadrics computed by the selector
...@@ -312,14 +312,14 @@ void Approximator_CornerCutting<PFP>::approximate(Dart d) ...@@ -312,14 +312,14 @@ void Approximator_CornerCutting<PFP>::approximate(Dart d)
do do
{ {
++k1 ; ++k1 ;
it = m.alpha1(it) ; it = m.phi2_1(it) ;
} while(it != d) ; } while(it != d) ;
REAL k2 = 0 ; REAL k2 = 0 ;
it = dd ; it = dd ;
do do
{ {
++k2 ; ++k2 ;
it = m.alpha1(it) ; it = m.phi2_1(it) ;
} while(it != dd) ; } while(it != dd) ;
REAL alpha = (k1-1) * (k2-1) / (k1*k2-1) ; REAL alpha = (k1-1) * (k2-1) / (k1*k2-1) ;
...@@ -330,7 +330,7 @@ void Approximator_CornerCutting<PFP>::approximate(Dart d) ...@@ -330,7 +330,7 @@ void Approximator_CornerCutting<PFP>::approximate(Dart d)
do do
{ {
m1 += this->m_attrV[m.phi1(it)] ; m1 += this->m_attrV[m.phi1(it)] ;
it = m.alpha1(it) ; it = m.phi2_1(it) ;
++count ; ++count ;
} while (it != d) ; } while (it != d) ;
m1 /= REAL(count) ; m1 /= REAL(count) ;
...@@ -342,7 +342,7 @@ void Approximator_CornerCutting<PFP>::approximate(Dart d) ...@@ -342,7 +342,7 @@ void Approximator_CornerCutting<PFP>::approximate(Dart d)
do do
{ {
m2 += this->m_attrV[m.phi1(it)] ; m2 += this->m_attrV[m.phi1(it)] ;
it = m.alpha1(it) ; it = m.phi2_1(it) ;
++count ; ++count ;
} while (it != dd) ; } while (it != dd) ;
m2 /= REAL(count) ; m2 /= REAL(count) ;
......
...@@ -51,7 +51,7 @@ void Predictor_HalfCollapse<PFP>::predict(Dart d2, Dart dd2) ...@@ -51,7 +51,7 @@ void Predictor_HalfCollapse<PFP>::predict(Dart d2, Dart dd2)
Dart it = dd2 ; Dart it = dd2 ;
do { do {
s2_1 += this->m_attrV[m.phi1(it)] ; s2_1 += this->m_attrV[m.phi1(it)] ;
it = m.alpha1(it) ; it = m.phi2_1(it) ;
++k2 ; ++k2 ;
} while (m.phi2(it) != m.phi_1(d2)) ; } while (m.phi2(it) != m.phi_1(d2)) ;
...@@ -84,12 +84,12 @@ typename PFP::REAL Predictor_CornerCutting<PFP>::autoAlpha(Dart d2, Dart dd2) ...@@ -84,12 +84,12 @@ typename PFP::REAL Predictor_CornerCutting<PFP>::autoAlpha(Dart d2, Dart dd2)
do do
{ {
++k1 ; ++k1 ;
it = m.alpha1(it) ; it = m.phi2_1(it) ;
} while(it != dd2) ; } while(it != dd2) ;
do do
{ {
++k2 ; ++k2 ;
it = m.alpha1(it) ; it = m.phi2_1(it) ;
} while(it != d2) ; } while(it != d2) ;
return (k1-1) * (k2-1) / (k1*k2-1) ; return (k1-1) * (k2-1) / (k1*k2-1) ;
} }
...@@ -116,7 +116,7 @@ void Predictor_CornerCutting<PFP>::predict(Dart d2, Dart dd2) ...@@ -116,7 +116,7 @@ void Predictor_CornerCutting<PFP>::predict(Dart d2, Dart dd2)
Dart it = d2 ; Dart it = d2 ;
do { do {
m1 += this->m_attrV[m.phi1(it)] ; m1 += this->m_attrV[m.phi1(it)] ;
it = m.alpha1(it) ; it = m.phi2_1(it) ;
++count ; ++count ;
} while (m.phi2(it) != m.phi_1(dd2)) ; } while (m.phi2(it) != m.phi_1(dd2)) ;
m1 /= REAL(count) ; m1 /= REAL(count) ;
...@@ -130,7 +130,7 @@ void Predictor_CornerCutting<PFP>::predict(Dart d2, Dart dd2) ...@@ -130,7 +130,7 @@ void Predictor_CornerCutting<PFP>::predict(Dart d2, Dart dd2)
it = dd2 ; it = dd2 ;
do { do {
m2 += this->m_attrV[m.phi1(it)] ; m2 += this->m_attrV[m.phi1(it)] ;
it = m.alpha1(it) ; it = m.phi2_1(it) ;
++count ; ++count ;
} while (m.phi2(it) != m.phi_1(d2)) ; } while (m.phi2(it) != m.phi_1(d2)) ;
m2 /= REAL(count) ; m2 /= REAL(count) ;
...@@ -155,7 +155,7 @@ void Predictor_TangentPredict1<PFP>::predictedTangent(Dart d2, Dart dd2, VEC3& d ...@@ -155,7 +155,7 @@ void Predictor_TangentPredict1<PFP>::predictedTangent(Dart d2, Dart dd2, VEC3& d
Dart it = d2 ; Dart it = d2 ;
do { do {
s1_1 += this->m_attrV[m.phi1(it)] ; s1_1 += this->m_attrV[m.phi1(it)] ;
it = m.alpha1(it) ; it = m.phi2_1(it) ;
++k1 ; ++k1 ;
} while (m.phi2(it) != m.phi_1(dd2)) ; } while (m.phi2(it) != m.phi_1(dd2)) ;
...@@ -163,7 +163,7 @@ void Predictor_TangentPredict1<PFP>::predictedTangent(Dart d2, Dart dd2, VEC3& d ...@@ -163,7 +163,7 @@ void Predictor_TangentPredict1<PFP>::predictedTangent(Dart d2, Dart dd2, VEC3& d
it = dd2 ; it = dd2 ;
do { do {
s2_1 += this->m_attrV[m.phi1(it)] ; s2_1 += this->m_attrV[m.phi1(it)] ;
it = m.alpha1(it) ; it = m.phi2_1(it) ;
++k2 ; ++k2 ;
} while (m.phi2(it) != m.phi_1(d2)) ; } while (m.phi2(it) != m.phi_1(d2)) ;
...@@ -210,7 +210,7 @@ void Predictor_TangentPredict2<PFP>::predictedTangent(Dart d2, Dart dd2, VEC3& d ...@@ -210,7 +210,7 @@ void Predictor_TangentPredict2<PFP>::predictedTangent(Dart d2, Dart dd2, VEC3& d
Dart it = d2 ; Dart it = d2 ;
do { do {
s1_1 += this->m_attrV[m.phi1(it)] ; s1_1 += this->m_attrV[m.phi1(it)] ;
it = m.alpha1(it) ; it = m.phi2_1(it) ;
++k1 ; ++k1 ;
} while (m.phi2(it) != m.phi_1(dd2)) ; } while (m.phi2(it) != m.phi_1(dd2)) ;
...@@ -221,7 +221,7 @@ void Predictor_TangentPredict2<PFP>::predictedTangent(Dart d2, Dart dd2, VEC3& d ...@@ -221,7 +221,7 @@ void Predictor_TangentPredict2<PFP>::predictedTangent(Dart d2, Dart dd2, VEC3& d
Dart p2 = m.phi2(p1) ; Dart p2 = m.phi2(p1) ;
if(p2 != p1) if(p2 != p1)
s1_2 += this->m_attrV[m.phi_1(p2)] ; s1_2 += this->m_attrV[m.phi_1(p2)] ;
it = m.alpha1(it) ; it = m.phi2_1(it) ;
} while (it != dd2) ; } while (it != dd2) ;
s1_2 += this->m_attrV[m.phi_1(d1)] ; s1_2 += this->m_attrV[m.phi_1(d1)] ;
s1_2 += this->m_attrV[m.phi_1(dd2)] ; s1_2 += this->m_attrV[m.phi_1(dd2)] ;
...@@ -230,7 +230,7 @@ void Predictor_TangentPredict2<PFP>::predictedTangent(Dart d2, Dart dd2, VEC3& d ...@@ -230,7 +230,7 @@ void Predictor_TangentPredict2<PFP>::predictedTangent(Dart d2, Dart dd2, VEC3& d
it = dd2 ; it = dd2 ;
do {