// // 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 template inline void removeDuplicates(const Eigen::Matrix &V, const Eigen::MatrixXi &F, Eigen::Matrix &NV, Eigen::MatrixXi &NF, Eigen::VectorXi &I, const double epsilon = 2.2204e-15); } // Implementation template inline void igl::removeDuplicates(const Eigen::Matrix &V, const Eigen::MatrixXi &F, Eigen::Matrix &NV, Eigen::MatrixXi &NF, Eigen::VectorXi &I, const double epsilon) { //// build collapse map int n = V.rows(); I = Eigen::VectorXi (n); I[0] = 0; bool *VISITED = new bool[n]; for (int i =0; i (n,V.cols()); int count = 0; Eigen::VectorXd d(n); for (int i =0; i face; NF = Eigen::MatrixXi(F.rows(),F.cols()); for (int i =0; i