//********************************** //*** simlification utilities // Written by Jarek Rossignac, June 2006 //********************************** void flip(int c) { // fip edge opposite to corner c V[n(o(c))]=v(c); V[n(c)]=v(o(c)); int co=o(c); O[co]=r(c); O[r(c)]=co; O[c]=r(co); O[r(co)]=c; O[p(c)]=p(co); O[p(co)]=p(c); } void doFlips() { for (int c=0; c<3*nt; c++) {if (g(n(c)).disTo(g(p(c)))>g(c).disTo(g(o(c)))) {flip(c);}; }; } // assumes manifold void collapse(int c) { // collapse edge opposite to corner c int b=p(c), oc=o(c), vnc=v(n(c)); for (int a=b; a!=n(oc); a=p(r(a))) {V[a]=vnc;}; V[p(c)]=vnc; V[n(oc)]=vnc; O[l(c)]=r(c); O[r(c)]=l(c); O[l(oc)]=r(oc); O[r(oc)]=l(oc); }