void ModButterfly::rotateUntilBorder(RgbVertexC& v, Pos& pos) { assert(v.vp() == pos.v); do { pos.FlipE(); pos.FlipF(); } while (!pos.IsBorder()); assert(v.vp() == pos.v); }
void ModButterfly::rotate(RgbVertexC& v, Pos& pos,int angle) { //std::cerr << v.index << " requested: " << angle << " ----- "; assert(v.vp() == pos.v); while (angle > 0) { RgbTriangleC t = RgbTriangleC(v.m,v.rgbInfo,pos.F()->Index()); int realz = -1; for (int i = 0; i<3; i++) if (t.V(i).vp() == pos.v) realz = i; assert(realz != -1); angle -= t.getAngle(realz); //std::cerr << "| " << t.getAngle(realz); pos.FlipE(); pos.FlipF(); } //std::cerr << " ----- result : " << angle << std::endl; //assert(angle == 0); }