|
@@ -6,9 +6,23 @@ IGL_INLINE void igl::prepare_lhs_double(
|
|
|
mxArray *plhs[])
|
|
|
{
|
|
|
using namespace std;
|
|
|
+ using namespace Eigen;
|
|
|
plhs[0] = mxCreateDoubleMatrix(V.rows(),V.cols(), mxREAL);
|
|
|
double * Vp = mxGetPr(plhs[0]);
|
|
|
- copy(&V.data()[0],&V.data()[0]+V.size(),Vp);
|
|
|
+
|
|
|
+ typedef typename DerivedV::Scalar Scalar;
|
|
|
+ const Scalar * V_data;
|
|
|
+ Matrix<Scalar, DerivedV::ColsAtCompileTime, DerivedV::RowsAtCompileTime, RowMajor> VT;
|
|
|
+ if(DerivedV::IsRowMajor)
|
|
|
+ {
|
|
|
+ VT = V.transpose();
|
|
|
+ V_data = VT.data();
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ V_data = V.data();
|
|
|
+ }
|
|
|
+
|
|
|
+ copy(V_data,V_data+V.size(),Vp);
|
|
|
}
|
|
|
|
|
|
template <typename DerivedV>
|
|
@@ -17,9 +31,23 @@ IGL_INLINE void igl::prepare_lhs_logical(
|
|
|
mxArray *plhs[])
|
|
|
{
|
|
|
using namespace std;
|
|
|
+ using namespace Eigen;
|
|
|
plhs[0] = mxCreateLogicalMatrix(V.rows(),V.cols());
|
|
|
mxLogical * Vp = static_cast<mxLogical*>(mxGetData(plhs[0]));
|
|
|
- copy(&V.data()[0],&V.data()[0]+V.size(),Vp);
|
|
|
+
|
|
|
+ typedef typename DerivedV::Scalar Scalar;
|
|
|
+ const Scalar * V_data;
|
|
|
+ Matrix<Scalar, DerivedV::ColsAtCompileTime, DerivedV::RowsAtCompileTime, RowMajor> VT;
|
|
|
+ if(DerivedV::IsRowMajor)
|
|
|
+ {
|
|
|
+ VT = V.transpose();
|
|
|
+ V_data = VT.data();
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ V_data = V.data();
|
|
|
+ }
|
|
|
+
|
|
|
+ copy(V_data,V_data+V.size(),Vp);
|
|
|
}
|
|
|
|
|
|
template <typename DerivedV>
|