void permuteVertices(Mesh& m, uintA& p) { CHECK(p.N==m.V.d0, ""); uint i; arr x(p.N, 3); for(i=0; i<p.N; i++) { x(i, 0)=m.V(p(i), 0); x(i, 1)=m.V(p(i), 1); x(i, 2)=m.V(p(i), 2); } m.V=x; if(m.Vn.N) { for(i=0; i<p.N; i++) { x(i, 0)=m.Vn(p(i), 0); x(i, 1)=m.Vn(p(i), 1); x(i, 2)=m.Vn(p(i), 2); } m.Vn=x; } if(m.C.N) { for(i=0; i<p.N; i++) { x(i, 0)=m.C(p(i), 0); x(i, 1)=m.C(p(i), 1); x(i, 2)=m.C(p(i), 2); } m.C=x; } uintA y(m.T.d0, 3); uintA p2(p.N); //inverse permutation for(i=0; i<p.N; i++) p2(p(i))=i; for(i=0; i<m.T.d0; i++) { y(i, 0)=p2(m.T(i, 0)); y(i, 1)=p2(m.T(i, 1)); y(i, 2)=p2(m.T(i, 2)); } m.T=y; }