https://github.com/HTDerekLiu/surface_multigrid_code
Raw File
Tip revision: a827578755d864df68b103c71048c7da7a00ce59 authored by HTDerekLiu on 09 August 2021, 18:36:04 UTC
add a faster example
Tip revision: a827578
SSP_decimate.cpp
#include "SSP_decimate.h"

bool SSP_decimate(
    const Eigen::MatrixXd & VO,
    const Eigen::MatrixXi & FO,
    const size_t & tarF,
    const int & dec_type,
    Eigen::MatrixXd & V,
    Eigen::MatrixXi & F,
    Eigen::VectorXi & IMF,
    Eigen::VectorXi & IM,
    std::vector<single_collapse_data> & decInfo,
    std::vector<std::vector<int>> & decIM,
    Eigen::VectorXi & FIM)
{
  using namespace std;
  bool returnVal = true;

  Eigen::VectorXi BI;
  if (!igl::is_vertex_manifold(FO, BI) || !igl::is_edge_manifold(FO)) {
    cout << "input mesh is not manifold\n";
    return false;
  }

  switch (dec_type)
  {
    case 1: // mid point 
      cout << "uniform decimation \n";
      returnVal = SSP_midpoint(VO,FO,tarF, V,F,IMF, IM, decInfo, decIM, FIM);
      break;
    case 2: // vertex removal
      cout << "vertex removal \n";
      returnVal = SSP_vertexRemoval(VO,FO,tarF, V,F,IMF, IM, decInfo, decIM, FIM);
      break;
    default:
      cout << "qslim \n";
      returnVal = SSP_qslim(VO,FO,tarF, V,F,IMF, IM, decInfo, decIM, FIM);
  }
  return returnVal;
}
back to top