// This file is part of libigl, a simple c++ geometry processing library. // // Copyright (C) 2015 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 "parse_rhs.h" #include template IGL_INLINE void igl::parse_rhs_double( const mxArray *prhs[], Eigen::PlainObjectBase & V) { using namespace std; using namespace Eigen; // set number of mesh vertices const int n = mxGetM(prhs[0]); // set vertex position pointers double * Vp = mxGetPr(prhs[0]); const int dim = mxGetN(prhs[0]); typedef typename DerivedV::Scalar Scalar; Matrix VT; Scalar * V_data; if(DerivedV::IsRowMajor) { VT.resize(dim,n); V_data = VT.data(); }else { V.resize(n,dim); V_data = V.data(); } copy(Vp,Vp+n*dim,V_data); if(DerivedV::IsRowMajor) { V = VT.transpose(); } } template IGL_INLINE void igl::parse_rhs_index( const mxArray *prhs[], Eigen::PlainObjectBase & V) { parse_rhs_double(prhs,V); V.array() -= 1; } #ifdef IGL_STATIC_LIBRARY template void igl::parse_rhs_index >(mxArray_tag const**, Eigen::PlainObjectBase >&); template void igl::parse_rhs_index >(mxArray_tag const**, Eigen::PlainObjectBase >&); template void igl::parse_rhs_double >(mxArray_tag const**, Eigen::PlainObjectBase >&); #endif