21#include "manifold/common.h"
22#include "manifold/vec_view.h"
121 std::vector<CrossSection>
Decompose()
const;
150 double miter_limit = 2.0,
int circularSegments = 0)
const;
159 const std::vector<CrossSection>& crossSections,
OpType op);
178 mutable std::shared_ptr<const PathImpl> paths_;
179 mutable mat2x3 transform_ = la::identity;
181 std::shared_ptr<const PathImpl> GetPaths()
const;
Two-dimensional cross sections guaranteed to be without self-intersections, or overlaps between polyg...
Definition cross_section.h:41
CrossSection Boolean(const CrossSection &second, OpType op) const
Definition cross_section.cpp:362
CrossSection & operator+=(const CrossSection &)
Definition cross_section.cpp:420
Polygons ToPolygons() const
Definition cross_section.cpp:788
CrossSection WarpBatch(std::function< void(VecView< vec2 >)> warpFunc) const
Definition cross_section.cpp:588
CrossSection operator+(const CrossSection &) const
Definition cross_section.cpp:412
CrossSection operator^(const CrossSection &) const
Definition cross_section.cpp:445
CrossSection Translate(const vec2 v) const
Definition cross_section.cpp:499
CrossSection Mirror(const vec2 ax) const
Definition cross_section.cpp:542
CrossSection & operator-=(const CrossSection &)
Definition cross_section.cpp:437
static CrossSection Square(const vec2 dims, bool center=false)
Definition cross_section.cpp:314
std::vector< CrossSection > Decompose() const
Definition cross_section.cpp:472
CrossSection Transform(const mat2x3 &m) const
Definition cross_section.cpp:558
CrossSection Offset(double delta, JoinType jt=JoinType::Round, double miter_limit=2.0, int circularSegments=0) const
Definition cross_section.cpp:670
CrossSection Rotate(double degrees) const
Definition cross_section.cpp:512
static CrossSection BatchBoolean(const std::vector< CrossSection > &crossSections, OpType op)
Definition cross_section.cpp:374
size_t NumContour() const
Definition cross_section.cpp:769
bool IsEmpty() const
Definition cross_section.cpp:774
FillRule
Definition cross_section.h:66
@ Positive
Only sub-regions with winding counts > 0 are filled.
Definition cross_section.h:69
@ NonZero
Only non-zero sub-regions are filled.
Definition cross_section.h:68
@ EvenOdd
Only odd numbered sub-regions are filled.
Definition cross_section.h:67
@ Negative
Only sub-regions with winding counts < 0 are filled.
Definition cross_section.h:70
CrossSection & operator^=(const CrossSection &)
Definition cross_section.cpp:453
CrossSection Simplify(double epsilon=1e-6) const
Definition cross_section.cpp:624
CrossSection Hull() const
Definition cross_section.cpp:715
CrossSection Warp(std::function< void(vec2 &)> warpFunc) const
Definition cross_section.cpp:573
double Area() const
Definition cross_section.cpp:751
size_t NumVert() const
Definition cross_section.cpp:756
CrossSection()
Definition cross_section.cpp:215
CrossSection Scale(const vec2 s) const
Definition cross_section.cpp:527
static CrossSection Compose(const std::vector< CrossSection > &)
Definition cross_section.cpp:462
Rect Bounds() const
Definition cross_section.cpp:780
JoinType
Definition cross_section.h:82
@ Bevel
Definition cross_section.h:94
@ Round
Definition cross_section.h:86
@ Square
Definition cross_section.h:83
@ Miter
Definition cross_section.h:89
CrossSection operator-(const CrossSection &) const
Definition cross_section.cpp:429
static CrossSection Circle(double radius, int circularSegments=0)
Definition cross_section.cpp:345
constexpr double degrees(double a)
Definition common.h:76
std::vector< SimplePolygon > Polygons
Set of polygons with holes. Order of contours is arbitrary. Can contain any depth of nested holes and...
Definition common.h:140
OpType
Boolean operation type: Add (Union), Subtract (Difference), and Intersect.
Definition common.h:474
std::vector< vec2 > SimplePolygon
Single polygon contour, wound CCW. First and last point are implicitly connected. Should ensure all i...
Definition common.h:132
Definition cross_section.cpp:27
Axis-aligned 2D box, primarily for bounding.
Definition common.h:308