offset_surface.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #ifndef IGL_OFFSET_SURFACE_H
  2. #define IGL_OFFSET_SURFACE_H
  3. #include "igl_inline.h"
  4. #include "signed_distance.h"
  5. #include <Eigen/Core>
  6. namespace igl
  7. {
  8. /// Compute a triangulated offset surface using matching cubes on a grid of
  9. /// signed distance values from the input triangle mesh.
  10. ///
  11. /// @param[in] V #V by 3 list of mesh vertex positions
  12. /// @param[in] F #F by 3 list of mesh triangle indices into V
  13. /// @param[in] isolevel iso level to extract (signed distance: negative inside)
  14. /// @param[in] s number of grid cells along longest side (controls resolution)
  15. /// @param[in] signed_distance_type type of signing to use (see
  16. /// ../signed_distance.h)
  17. /// @param[out] SV #SV by 3 list of output surface mesh vertex positions
  18. /// @param[out] SF #SF by 3 list of output mesh triangle indices into SV
  19. /// @param[out] GV #GV=side(0)*side(1)*side(2) by 3 list of grid cell centers
  20. /// @param[out] side list of number of grid cells in x, y, and z directions
  21. /// @param[out] S #GV by 3 list of signed distance values _near_ `isolevel` ("far"
  22. /// from `isolevel` these values are incorrect)
  23. ///
  24. template <
  25. typename DerivedV,
  26. typename DerivedF,
  27. typename isolevelType,
  28. typename DerivedSV,
  29. typename DerivedSF,
  30. typename DerivedGV,
  31. typename Derivedside,
  32. typename DerivedS>
  33. void offset_surface(
  34. const Eigen::MatrixBase<DerivedV> & V,
  35. const Eigen::MatrixBase<DerivedF> & F,
  36. const isolevelType isolevel,
  37. const typename Derivedside::Scalar s,
  38. const SignedDistanceType & signed_distance_type,
  39. Eigen::PlainObjectBase<DerivedSV> & SV,
  40. Eigen::PlainObjectBase<DerivedSF> & SF,
  41. Eigen::PlainObjectBase<DerivedGV> & GV,
  42. Eigen::PlainObjectBase<Derivedside> & side,
  43. Eigen::PlainObjectBase<DerivedS> & S);
  44. }
  45. #ifndef IGL_STATIC_LIBRARY
  46. # include "offset_surface.cpp"
  47. #endif
  48. #endif