// This file is part of libigl, a simple c++ geometry processing library. // // Copyright (C) 2013 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/. #include "mat_min.h" template IGL_INLINE void igl::mat_min( const Eigen::Matrix & X, const int dim, Eigen::Matrix & Y, Eigen::Matrix & I) { assert(dim==1||dim==2); // output size int n = (dim==1?X.cols():X.rows()); // resize output Y.resize(n); I.resize(n); // loop over dimension opposite of dim for(int j = 0;j::Index PHONY; typename Eigen::Matrix::Index i; T m; if(dim==1) { m = X.col(j).minCoeff(&i,&PHONY); }else { m = X.row(j).minCoeff(&PHONY,&i); } Y(j) = m; I(j) = i; } } //template //IGL_INLINE Eigen::Matrix igl::mat_min( // const Eigen::Matrix & X, // const int dim) //{ // Eigen::Matrix Y; // Eigen::Matrix I; // mat_min(X,dim,Y,I); // return Y; //} #ifndef IGL_HEADER_ONLY // Explicit template specialization // generated by autoexplicit.sh template void igl::mat_min(Eigen::Matrix const&, int, Eigen::Matrix&, Eigen::Matrix&); #endif