py_arap.cpp 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. py::class_<igl::ARAPData> ARAPData(m, "ARAPData");
  2. ARAPData
  3. .def(py::init<>())
  4. .def_readwrite("n", &igl::ARAPData::n)
  5. .def_readwrite("energy", &igl::ARAPData::energy)
  6. .def_property("G",
  7. [](const igl::ARAPData& data) {return Eigen::MatrixXi(data.G);},
  8. [](igl::ARAPData& data, const Eigen::MatrixXi& G)
  9. {
  10. assert_is_VectorX("G",G);
  11. data.G = Eigen::VectorXi(G.cast<int>());
  12. })
  13. .def_readwrite("with_dynamics", &igl::ARAPData::with_dynamics)
  14. .def_readwrite("f_ext", &igl::ARAPData::f_ext)
  15. .def_readwrite("h", &igl::ARAPData::h)
  16. .def_readwrite("vel", &igl::ARAPData::vel)
  17. .def_readwrite("ym", &igl::ARAPData::ym)
  18. .def_readwrite("max_iter", &igl::ARAPData::max_iter)
  19. .def_readwrite("K", &igl::ARAPData::K)
  20. .def_readwrite("M", &igl::ARAPData::M)
  21. .def_readwrite("CSM", &igl::ARAPData::CSM)
  22. // .def_readwrite("solver_data", &igl::ARAPData::solver_data)
  23. .def_readwrite("dim", &igl::ARAPData::dim)
  24. .def_property("b",
  25. [](const igl::ARAPData& data) {return Eigen::MatrixXi(data.b);},
  26. [](igl::ARAPData& data, const Eigen::MatrixXi& b)
  27. {
  28. assert_is_VectorX("b",b);
  29. data.b = Eigen::VectorXi(b.cast<int>());
  30. })
  31. ;
  32. m.def("arap_precomputation", []
  33. (
  34. const Eigen::MatrixXd & V,
  35. const Eigen::MatrixXi & F,
  36. const int dim,
  37. const Eigen::MatrixXi& b,
  38. igl::ARAPData & data
  39. )
  40. {
  41. assert_is_VectorX("b",b);
  42. Eigen::VectorXi bt;
  43. if (b.size() != 0)
  44. bt = b;
  45. return igl::arap_precomputation(V,F,dim,bt,data);
  46. }, __doc_igl_arap_precomputation,
  47. py::arg("V"), py::arg("F"), py::arg("dim"), py::arg("b"), py::arg("data"));
  48. m.def("arap_solve", []
  49. (
  50. const Eigen::MatrixXd & bc,
  51. igl::ARAPData & data,
  52. Eigen::MatrixXd& U
  53. )
  54. {
  55. return igl::arap_solve(bc,data,U);
  56. }, __doc_igl_arap_solve,
  57. py::arg("bc"), py::arg("data"), py::arg("U"));