per lo sviluppo del decimatore e' necessario fare uso dei flags.
Il problema e' che quando si setta un flag per un vertice questo viene
settato anche per gli altri vertici.
In particolare il codice (in src/test/decimator/decimator.h) e' il seguente=
:
=09int referredBit =3D MESH_TYPE::VertexType::NewBitFlag();
for(vi =3D m.vert.begin(); vi !=3D m.vert.end(); ++vi)
{
=09=09=09=09....
=09 (*vi).ClearUserBit(referredBit);
.....
}
for(fi =3D m.face.begin(); fi !=3D m.face.end(); ++fi)
{
=09=09if(!(*fi).IsD())
=09=09=09{//se non devo cancellare la faccia
=09=09=09=09for(int i =3D 0; i < 3; ++i)
=09=09=09=09=09{//per ogni vertice del triangolo
=09=09=09=09=09=09if(! (*fi).V(i)->IsUserBit(referredBit))
=09=09=09=09=09=09=09{//se non l'ho gia cambiato
=09=09=09=09=09=09=09=09=09=09....
=09=09=09=09=09=09=09=09(*fi).V(i)->SetUserBit(referredBit);
=09=09=09=09=09
=09=09=09=09=09=09=09=09=09}
=09=09=09=09=09=09=09}
=09=09=09=09 }
.......
In particolare setta il primo a 1024 e da li' in poi li considera
tutti settati falsificando il test di
if(! (*fi).V(i)->IsUserBit(referredBit))
|