// This file is part of libigl, a simple c++ geometry processing library. // // Copyright (C) 2016 Alec Jacobson // // This Source Code Form is subject to the terms of the Mozilla Public License // v. 2.0. If a copy of the MPL was not distributed with this file, You can // obtain one at http://mozilla.org/MPL/2.0/. #ifndef IGL_QSLIM_OPTIMAL_COLLAPSE_EDGE_CALLBACKS_H #define IGL_QSLIM_OPTIMAL_COLLAPSE_EDGE_CALLBACKS_H #include "igl_inline.h" #include #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