4#ifdef POLYFEM_WITH_CLIPPER
7#include <polyclipper_vector2d.hh>
8#include <polyclipper_vector3d.hh>
13 static constexpr int64_t DOUBLE_TO_INT_SCALE_FACTOR = 1l << 51;
24 static std::vector<Eigen::MatrixXd>
clip(
25 const Eigen::MatrixXd &subject_polygon,
26 const Eigen::MatrixXd &clipping_polygon);
28#ifdef POLYFEM_WITH_CLIPPER
29 static ClipperLib::IntPoint toClipperPoint(
const Eigen::RowVector2d &p);
30 static Eigen::RowVector2d fromClipperPoint(
const ClipperLib::IntPoint &p);
32 static ClipperLib::Path toClipperPolygon(
const Eigen::MatrixXd &
V);
33 static Eigen::MatrixXd fromClipperPolygon(
const ClipperLib::Path &path);
50 static std::vector<Eigen::MatrixXd>
clip(
51 const Eigen::MatrixXd &subject_triangle,
52 const Eigen::MatrixXd &clipping_triangle);
67 static std::vector<Eigen::MatrixXd>
clip(
68 const Eigen::MatrixXd &subject_tet,
69 const Eigen::MatrixXd &clipping_tet);
static PolyClipper::Vector2d toPolyClipperVector(const Eigen::Vector2d &v)
static std::vector< Eigen::MatrixXd > clip(const Eigen::MatrixXd &subject_polygon, const Eigen::MatrixXd &clipping_polygon)
Clip a polygon using convex polygon.
static Eigen::Vector2d fromPolyClipperVector(const PolyClipper::Vector2d &v)
std::vector< int > Polygon
TetrahedronClipping()=delete
static Eigen::Vector3d fromPolyClipperVector(const PolyClipper::Vector3d &v)
static std::vector< Eigen::MatrixXd > clip(const Eigen::MatrixXd &subject_tet, const Eigen::MatrixXd &clipping_tet)
Clip a tetrahedron using tetrahedron.
static PolyClipper::Vector3d toPolyClipperVector(const Eigen::Vector3d &v)
std::vector< Polygon > Polygons
TriangleClipping()=delete
static std::vector< Eigen::MatrixXd > clip(const Eigen::MatrixXd &subject_triangle, const Eigen::MatrixXd &clipping_triangle)
Clip a triangle using triangle.