// // removeDuplicates.h // Preview3D // // Created by Olga Diamanti on 17/11/11. // Copyright (c) 2011 __MyCompanyName__. All rights reserved. // #ifndef RemoveDuplicates_h #define RemoveDuplicates_h #include namespace igl { // [ NV, NF ] = removeDuplicates( V,F,epsilon ) // Merge the duplicate vertices from V, fixing the topology accordingly // // Input: // V,F: mesh description // epsilon: minimal distance to consider two vertices identical // // Output: // NV, NF: new mesh without duplicate vertices void removeDuplicates(const Eigen::MatrixXd &V, const Eigen::MatrixXi &F, Eigen::MatrixXd &NV, Eigen::MatrixXi &NF, Eigen::VectorXi &I, const double epsilon); } // Implementation inline void igl::removeDuplicates(const Eigen::MatrixXd &V, const Eigen::MatrixXi &F, Eigen::MatrixXd &NV, Eigen::MatrixXi &NF, Eigen::VectorXi &I, const double epsilon = 2.2204e-15) { assert (F.cols() == 3); //// build collapse map int n = V.rows(); I = Eigen::VectorXi (n); I[0] = 0; bool *VISITED = new bool[n]; for (int i =0; i