oriented_facets.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. // This file is part of libigl, a simple c++ geometry processing library.
  2. //
  3. // Copyright (C) 2017 Alec Jacobson <[email protected]>
  4. //
  5. // This Source Code Form is subject to the terms of the Mozilla Public License
  6. // v. 2.0. If a copy of the MPL was not distributed with this file, You can
  7. // obtain one at http://mozilla.org/MPL/2.0/.
  8. #ifndef IGL_ORIENTED_FACETS_H
  9. #define IGL_ORIENTED_FACETS_H
  10. #include "igl_inline.h"
  11. #include <Eigen/Dense>
  12. namespace igl
  13. {
  14. /// Determines all "directed
  15. /// [facets](https://en.wikipedia.org/wiki/Simplex#Elements)" of a given set
  16. /// of simplicial elements. For a manifold triangle mesh, this computes all
  17. /// half-edges. For a manifold tetrahedral mesh, this computes all half-faces.
  18. ///
  19. /// @param[in] F #F by simplex_size list of simplices
  20. /// @param[out] E #E by simplex_size-1 list of facets, such that
  21. /// E.row(f+#F*c) is the facet opposite F(f,c)
  22. ///
  23. /// \note this is not the same as igl::edges because this includes every
  24. /// directed edge including repeats (meaning interior edges on a surface will
  25. /// show up once for each direction and non-manifold edges may appear more than
  26. /// once for each direction).
  27. template <typename DerivedF, typename DerivedE>
  28. IGL_INLINE void oriented_facets(
  29. const Eigen::MatrixBase<DerivedF> & F,
  30. Eigen::PlainObjectBase<DerivedE> & E);
  31. }
  32. #ifndef IGL_STATIC_LIBRARY
  33. # include "oriented_facets.cpp"
  34. #endif
  35. #endif