8#ifndef IGL_SLICE_CACHED_H
9#define IGL_SLICE_CACHED_H
11#define EIGEN_YES_I_KNOW_SPARSE_MODULE_IS_NOT_STABLE_YET
13#include <Eigen/Sparse>
45 template <
typename TX,
typename TY,
typename DerivedI>
47 const Eigen::SparseMatrix<TX>& X,
48 const Eigen::Matrix<int,Eigen::Dynamic,1> & R,
49 const Eigen::Matrix<int,Eigen::Dynamic,1> & C,
50 Eigen::MatrixBase<DerivedI>& data,
51 Eigen::SparseMatrix<TY>& Y);
57 template <
typename TX,
typename TY,
typename DerivedI>
59 const Eigen::SparseMatrix<TX>& X,
60 const Eigen::MatrixBase<DerivedI>& data,
61 Eigen::SparseMatrix<TY>& Y);
64#ifndef IGL_STATIC_LIBRARY
65# include "slice_cached.cpp"
#define IGL_INLINE
Definition igl_inline.h:15
void slice_cached(const Eigen::SparseMatrix< TX > &X, const Eigen::MatrixBase< DerivedI > &data, Eigen::SparseMatrix< TY > &Y)
Slice X by cached C,R indices into Y.
void slice_cached_precompute(const Eigen::SparseMatrix< TX > &X, const Eigen::Matrix< int, Eigen::Dynamic, 1 > &R, const Eigen::Matrix< int, Eigen::Dynamic, 1 > &C, Eigen::MatrixBase< DerivedI > &data, Eigen::SparseMatrix< TY > &Y)
Act like the matlab X(row_indices,col_indices) operator, where row_indices, col_indices are non-negat...