py_signed_distance.cpp 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. py::enum_<igl::SignedDistanceType>(m, "SignedDistanceType")
  2. .value("SIGNED_DISTANCE_TYPE_PSEUDONORMAL", igl::SIGNED_DISTANCE_TYPE_PSEUDONORMAL)
  3. .value("SIGNED_DISTANCE_TYPE_WINDING_NUMBER", igl::SIGNED_DISTANCE_TYPE_WINDING_NUMBER)
  4. .value("SIGNED_DISTANCE_TYPE_DEFAULT", igl::SIGNED_DISTANCE_TYPE_DEFAULT)
  5. .value("SIGNED_DISTANCE_TYPE_UNSIGNED", igl::SIGNED_DISTANCE_TYPE_UNSIGNED)
  6. .value("NUM_SIGNED_DISTANCE_TYPE", igl::NUM_SIGNED_DISTANCE_TYPE)
  7. .export_values();
  8. m.def("signed_distance", []
  9. (
  10. const Eigen::MatrixXd& P,
  11. const Eigen::MatrixXd& V,
  12. const Eigen::MatrixXi& F,
  13. const igl::SignedDistanceType sign_type,
  14. Eigen::MatrixXd& S,
  15. Eigen::MatrixXi& I,
  16. Eigen::MatrixXd& C,
  17. Eigen::MatrixXd& N
  18. )
  19. {
  20. Eigen::VectorXd Sv;
  21. Eigen::VectorXi Iv;
  22. igl::signed_distance(P, V, F, sign_type, Sv, Iv, C, N);
  23. S = Sv;
  24. I = Iv;
  25. }, __doc_igl_signed_distance,
  26. py::arg("P"), py::arg("V"), py::arg("F"), py::arg("sign_type"), py::arg("S"), py::arg("I"), py::arg("C"), py::arg("N"));
  27. //m.def("signed_distance_pseudonormal", []
  28. //(
  29. // const AABB<Eigen::MatrixXd, 3> & tree,
  30. // const Eigen::MatrixXd& V,
  31. // const Eigen::MatrixXi& F,
  32. // const Eigen::MatrixXd& FN,
  33. // const Eigen::MatrixXd& VN,
  34. // const Eigen::MatrixXd& EN,
  35. // const Eigen::MatrixXi& EMAP,
  36. // const Eigen::MatrixXd& q
  37. //)
  38. //{
  39. // assert_is_VectorX("q", q);
  40. // assert_is_VectorX("EMAP",EMAP);
  41. // return igl::signed_distance_pseudonormal(tree, V, F, FN, VN, EN, EMAP, q);
  42. //}, __doc_igl_signed_distance_pseudonormal,
  43. //py::arg("tree"), py::arg("V"), py::arg("F"), py::arg("FN"), py::arg("VN"), py::arg("EN"), py::arg("EMAP"), py::arg("q"));
  44. m.def("signed_distance_pseudonormal", []
  45. (
  46. const Eigen::MatrixXd& P,
  47. const Eigen::MatrixXd& V,
  48. const Eigen::MatrixXi& F,
  49. const igl::AABB<Eigen::MatrixXd, 3> & tree,
  50. const Eigen::MatrixXd& FN,
  51. const Eigen::MatrixXd& VN,
  52. const Eigen::MatrixXd& EN,
  53. const Eigen::MatrixXi& EMAP,
  54. Eigen::MatrixXd& S,
  55. Eigen::MatrixXi& I,
  56. Eigen::MatrixXd& C,
  57. Eigen::MatrixXd& N
  58. )
  59. {
  60. assert_is_VectorX("EMAP", EMAP);
  61. Eigen::VectorXi EMAPv;
  62. if (EMAP.size() != 0)
  63. EMAPv = EMAP;
  64. Eigen::VectorXd Sv;
  65. Eigen::VectorXi Iv;
  66. igl::signed_distance_pseudonormal(P, V, F, tree, FN, VN, EN, EMAPv, Sv, Iv, C, N);
  67. S = Sv;
  68. I = Iv;
  69. }, __doc_igl_signed_distance_pseudonormal,
  70. py::arg("P"), py::arg("V"), py::arg("F"), py::arg("tree"), py::arg("FN"), py::arg("VN"), py::arg("EN"), py::arg("EMAP"), py::arg("S"), py::arg("I"), py::arg("C"), py::arg("N"));
  71. //m.def("signed_distance_pseudonormal", []
  72. //(
  73. // const AABB<Eigen::MatrixXd, 3> & tree,
  74. // const Eigen::MatrixXd& V,
  75. // const Eigen::MatrixXi& F,
  76. // const Eigen::MatrixXd& FN,
  77. // const Eigen::MatrixXd& VN,
  78. // const Eigen::MatrixXd& EN,
  79. // const Eigen::MatrixXi & EMAP,
  80. // const Eigen::MatrixXd & q,
  81. // double & s,
  82. // double & sqrd,
  83. // int & i,
  84. // Eigen::MatrixXd & c,
  85. // Eigen::MatrixXd & n
  86. //)
  87. //{
  88. // assert_is_VectorX("EMAP",EMAP);
  89. // assert_is_VectorX("q",q);
  90. // return igl::signed_distance_pseudonormal(tree, V, F, FN, VN, EN, EMAP, q, s, sqrd, i, c, n);
  91. //}, __doc_igl_signed_distance_pseudonormal,
  92. //py::arg("tree"), py::arg("V"), py::arg("F"), py::arg("FN"), py::arg("VN"), py::arg("EN"), py::arg("EMAP"), py::arg("q"), py::arg("s"), py::arg("sqrd"), py::arg("i"), py::arg("c"), py::arg("n"));
  93. //m.def("signed_distance_pseudonormal", []
  94. //(
  95. // const AABB<Eigen::MatrixXd, 2> & tree,
  96. // const Eigen::MatrixXd& V,
  97. // const Eigen::MatrixXi& F,
  98. // const Eigen::MatrixXd& FN,
  99. // const Eigen::MatrixXd& VN,
  100. // const Eigen::MatrixXd & q,
  101. // double & s,
  102. // double & sqrd,
  103. // int & i,
  104. // Eigen::MatrixXd & c,
  105. // Eigen::MatrixXd & n
  106. //)
  107. //{
  108. // assert_is_VectorX("q",q);
  109. // return igl::signed_distance_pseudonormal(tree, V, F, FN, VN, q, s, sqrd, i, c, n);
  110. //}, __doc_igl_signed_distance_pseudonormal,
  111. //py::arg("tree"), py::arg("V"), py::arg("F"), py::arg("FN"), py::arg("VN"), py::arg("q"), py::arg("s"), py::arg("sqrd"), py::arg("i"), py::arg("c"), py::arg("n"));
  112. //m.def("signed_distance_winding_number", []
  113. //(
  114. // AABB<Eigen::MatrixXd, 3> & tree,
  115. // const Eigen::MatrixXd& V,
  116. // const Eigen::MatrixXi& F,
  117. // igl::WindingNumberAABB<Eigen::Vector3d> & hier,
  118. // Eigen::RowVector3d & q
  119. //)
  120. //{
  121. // return igl::signed_distance_winding_number(tree, V, F, hier, q);
  122. //}, __doc_igl_signed_distance_winding_number,
  123. //py::arg("tree"), py::arg("V"), py::arg("F"), py::arg("hier"), py::arg("q"));