// This file is part of libigl, a simple c++ geometry processing library. // // Copyright (C) 2017 Daniele Panozzo // // 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 "slice_cached.h" #include #include #include #include "slice.h" template IGL_INLINE void igl::slice_cached_precompute( const Eigen::SparseMatrix& X, const Eigen::Matrix & R, const Eigen::Matrix & C, Eigen::MatrixBase& data, Eigen::SparseMatrix& Y ) { // Create a sparse matrix whose entries are the ids Eigen::SparseMatrix TS = X.template cast(); TS.makeCompressed(); for (unsigned i=0;i TS_sliced; igl::slice(TS,R,C,TS_sliced); Y = TS_sliced.cast(); data.resize(TS_sliced.nonZeros()); for (unsigned i=0;i IGL_INLINE void igl::slice_cached( const Eigen::SparseMatrix& X, const Eigen::MatrixBase& data, Eigen::SparseMatrix& Y ) { for (unsigned i=0; i >(Eigen::SparseMatrix const&, Eigen::MatrixBase > const&, Eigen::SparseMatrix&); template void igl::slice_cached_precompute >(Eigen::SparseMatrix const&, Eigen::Matrix const&, Eigen::Matrix const&, Eigen::MatrixBase >&, Eigen::SparseMatrix&); #endif