offset_surface.h 1.9 KB

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