https://github.com/HTDerekLiu/surface_multigrid_code
Tip revision: a827578755d864df68b103c71048c7da7a00ce59 authored by HTDerekLiu on 09 August 2021, 18:36:04 UTC
add a faster example
add a faster example
Tip revision: a827578
get_prolong.h
#ifndef GET_PROLONG_H
#define GET_PROLONG_H
#include <Eigen/Core>
#include <Eigen/Sparse>
#include <vector>
#include <iostream>
#include <SSP_decimate.h>
#include <single_collapse_data.h>
#include <query_fine_to_coarse.h>
// decimate the model with successive self-parameterization and compute the prolongation (aka interpolation) operator from V to Vf
//
// Inputs:
// Vf #Vf-by-3 input vertex positions
// Ff #Ff-by-3 input triangle indices
// tarF desired number of output faces
// dec_type decimation type (0:qslim, 1:midpoint, 2:vertex removal)
//
// Outputs:
// V #V by 3 output vertex posistions
// F #F by 3 ooutput face indices
// P #Vf by #V linear interpolation operator
void get_prolong(
const Eigen::MatrixXd & Vf,
const Eigen::MatrixXi & Ff,
const int & tarF,
const int & dec_type,
Eigen::MatrixXd & V,
Eigen::MatrixXi & F,
Eigen::SparseMatrix<double> & P);
// the same function as "get_prolong", but the output prolongation P is a 3#Vf by 3#V matrix
void get_prolong_block(
const Eigen::MatrixXd & Vf,
const Eigen::MatrixXi & Ff,
const int & tarF,
const int & dec_type,
Eigen::MatrixXd & V,
Eigen::MatrixXi & F,
Eigen::SparseMatrix<double> & P);
#endif