#ifndef IGL_QSLIM_OPTIMAL_COLLAPSE_EDGE_CALLBACKS_H #define IGL_QSLIM_OPTIMAL_COLLAPSE_EDGE_CALLBACKS_H #include "igl_inline.h" #include #include #include #include namespace igl { // Prepare callbacks for decimating edges using the qslim optimal placement // metric. // // Inputs: // E #E by 2 list of working edges // quadrics reference to list of working per vertex quadrics // v1 working variable to maintain end point of collapsed edge // v2 working variable to maintain end point of collapsed edge // Outputs // cost_and_placement callback for evaluating cost of edge collapse and // determining placement of vertex (see collapse_edge) // pre_collapse callback before edge collapse (see collapse_edge) // post_collapse callback after edge collapse (see collapse_edge) IGL_INLINE void qslim_optimal_collapse_edge_callbacks( Eigen::MatrixXi & E, std::vector > & quadrics, int & v1, int & v2, std::function & cost_and_placement, std::function > & ,/*Q*/ const std::vector >::iterator > &,/*Qit*/ const Eigen::MatrixXd & ,/*C*/ const int /*e*/ )> & pre_collapse, std::function > & , /*Q*/ const std::vector >::iterator > &, /*Qit*/ const Eigen::MatrixXd & , /*C*/ const int , /*e*/ const int , /*e1*/ const int , /*e2*/ const int , /*f1*/ const int , /*f2*/ const bool /*collapsed*/ )> & post_collapse); } #ifndef IGL_STATIC_LIBRARY # include "qslim_optimal_collapse_edge_callbacks.cpp" #endif #endif