Browse Source

finishing the previous commit

Former-commit-id: e02d172a2a23c7621833becbd7d60ce76555e25c
Daniele Panozzo 9 years ago
parent
commit
50cf01fe53
2 changed files with 24 additions and 3 deletions
  1. 4 1
      python/py_igl.cpp
  2. 20 2
      python/py_vector.cpp

+ 4 - 1
python/py_igl.cpp

@@ -32,6 +32,8 @@
 #include <igl/SolverStatus.h>
 #include <igl/active_set.h>
 #include <igl/eigs.h>
+#include <igl/readOBJ.h>
+#include <igl/harmonic.h>
 
 void python_export_igl(py::module &m)
 {
@@ -65,5 +67,6 @@ void python_export_igl(py::module &m)
 #include "py_igl/py_SolverStatus.cpp"
 #include "py_igl/py_active_set.cpp"
 #include "py_igl/py_eigs.cpp"
-
+#include "py_igl/py_readOBJ.cpp"
+#include "py_igl/py_harmonic.cpp"
 }

+ 20 - 2
python/py_vector.cpp

@@ -1,6 +1,8 @@
+#include <Eigen/Geometry>
 #include <Eigen/Dense>
 #include <Eigen/Sparse>
 
+
 #include "python.h"
 
 /// Creates Python bindings for a dynamic Eigen matrix
@@ -246,6 +248,17 @@ py::class_<Type> bind_eigen_2(py::module &m, const char *name,
             m(i.first, i.second) = v;
          })
 
+         .def("__getitem__", [](const Type &m, size_t i) {
+             if (i >= (size_t) m.size())
+                 throw py::index_error();
+             return m(i);
+          })
+         .def("__setitem__", [](Type &m, size_t i, Scalar v) {
+           if (i >= (size_t) m.size())
+                 throw py::index_error();
+             m(i) = v;
+          })
+
         /* Buffer access for interacting with NumPy */
         .def_buffer([](Type &m) -> py::buffer_info {
             return py::buffer_info(
@@ -599,7 +612,6 @@ void python_export_vector(py::module &m) {
     bind_eigen_diagonal_2< Eigen::DiagonalMatrix<int,Eigen::Dynamic,Eigen::Dynamic> > (me, "DiagonalMatrixi");
 
     /* Bindings for SimplicialLLT*/
-
     py::class_<Eigen::SimplicialLLT<Eigen::SparseMatrix<double > >> simpliciallltsparse(me, "SimplicialLLTsparse");
 
     simpliciallltsparse
@@ -613,9 +625,15 @@ void python_export_vector(py::module &m) {
           return "Numerical Issue";
     })
     .def("solve",[](const Eigen::SimplicialLLT<Eigen::SparseMatrix<double > >& s, const Eigen::MatrixXd& rhs) { return Eigen::MatrixXd(s.solve(rhs)); })
-
     ;
 
+    /* Bindings for Quaterniond*/
+    //py::class_<Eigen::Quaterniond > quaterniond(me, "Quaterniond");
+    //
+    // quaterniond
+    // .def(py::init<>())
+    // .def(py::init<double, double, double, double>())
+    // ;