predicates.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #pragma once
  2. #ifndef IGL_PREDICATES_PREDICATES_H
  3. #define IGL_PREDICATES_PREDICATES_H
  4. #include <igl/igl_inline.h>
  5. #include <Eigen/Core>
  6. namespace igl {
  7. namespace predicates {
  8. enum class Orientation {
  9. POSITIVE=1, INSIDE=1,
  10. NEGATIVE=-1, OUTSIDE=-1,
  11. COLLINEAR=0, COPLANAR=0, COCIRCULAR=0, COSPHERICAL=0, DEGENERATE=0
  12. };
  13. template<typename Vector2D>
  14. IGL_INLINE Orientation orient2d(
  15. const Eigen::MatrixBase<Vector2D>& pa,
  16. const Eigen::MatrixBase<Vector2D>& pb,
  17. const Eigen::MatrixBase<Vector2D>& pc);
  18. template<typename Vector3D>
  19. IGL_INLINE Orientation orient3d(
  20. const Eigen::MatrixBase<Vector3D>& pa,
  21. const Eigen::MatrixBase<Vector3D>& pb,
  22. const Eigen::MatrixBase<Vector3D>& pc,
  23. const Eigen::MatrixBase<Vector3D>& pd);
  24. template<typename Vector2D>
  25. IGL_INLINE Orientation incircle(
  26. const Eigen::MatrixBase<Vector2D>& pa,
  27. const Eigen::MatrixBase<Vector2D>& pb,
  28. const Eigen::MatrixBase<Vector2D>& pc,
  29. const Eigen::MatrixBase<Vector2D>& pd);
  30. template<typename Vector3D>
  31. IGL_INLINE Orientation insphere(
  32. const Eigen::MatrixBase<Vector3D>& pa,
  33. const Eigen::MatrixBase<Vector3D>& pb,
  34. const Eigen::MatrixBase<Vector3D>& pc,
  35. const Eigen::MatrixBase<Vector3D>& pd,
  36. const Eigen::MatrixBase<Vector3D>& pe);
  37. }
  38. }
  39. #ifndef IGL_STATIC_LIBRARY
  40. # include "predicates.cpp"
  41. #endif
  42. #endif