Examples

C++ Sample 1:
1
2
3
4
5
6
7
8
9
10
11
#include "clipper2/clipper.h"
...
using namespace Clipper2Lib;
int main()
{
  Paths64 subject, clip, solution;
  subject.push_back(MakePath({100, 50, 10, 79, 65, 2, 65, 98, 10, 21}));
  clip.push_back(MakePath({98, 63, 4, 68, 77, 8, 52, 100, 19, 12}));
  solution = Intersect(subject, clip, FillRule::NonZero);   

C# Sample 1:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
...
using Clipper2Lib;   
...
static void Main(string[] args)
{
  Paths64 subj = new Paths64();
  Paths64 clip = new Paths64();
  subj.Add(Clipper.MakePath(new int[] {
    100, 50, 10, 79, 65, 2, 65, 98, 10, 21 }));
  clip.Add(Clipper.MakePath(new int[] {
    98, 63, 4, 68, 77, 8, 52, 100, 19, 12 }));
  Paths64 solution = Clipper.Intersect(subj, clip, FillRule.NonZero);
}

Delphi Sample 1:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
uses
  Clipper, Clipper.Core;
   
var
  subject, clip, solution: TPaths64;
begin
  SetLength(subject, 1);
  subject[0] := MakePath([100, 50, 10, 79, 65, 2, 65, 98, 10, 21]);
  SetLength(clip, 1);
  clip[0] := MakePath([98, 63, 4, 68, 77, 8, 52, 100, 19, 12]);
  solution := Intersect( subject, clip, frNonZero);
   
  //DrawPolygons   

C++ Sample 2:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "clipper2/clipper.h"
...
using namespace Clipper2Lib;
   
int main()
{
  //set up the subject and clip polygons ...
  Paths64 subject;
  subject.push_back(Ellipse(Rect64(100,100,300,300)));
  subject.push_back(Ellipse(Rect64(125,130,275,180)));
  subject.push_back(Ellipse(Rect64(125,220,275,270)));
   
  Paths64 clip;
  clip.push_back(Ellipse(Rect64(140,70,220,320));
   
  //get the intersection
  Paths64 solution = Intersect(subject, clip, FillRule::EvenOdd);
   
  //DrawPolygons   
}   

C# Sample 2:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
...
using Clipper2Lib;   
...
   
static void Main(string[] args)
{
  Paths64 subject = new Paths64(3);
  subject.Add(Ellipse(new Rect64(100,100,300,300)));
  subject.Add(Ellipse(new Rect64(125,130,275,180)));
  subject.Add(Ellipse(new Rect64(125,220,275,270)));
   
  Paths64 clip = new Paths64(1);
  clip.Add(GetEllipsePoints(new Rect64(140,70,220,320)));
       
  Paths64 solution = Intersect(subject, clip, FillRule.EvenOdd);
   
  //DrawPolygons   
}

Delphi Sample 2:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
uses
  Img32, Clipper, Clipper.Core;
   
var
  subject, clip, solution: TPaths64;
begin
 
  //set up the subject and clip polygons ...
  SetLength(sub, 3);
  subject[0] := Ellipse(Rect64(100,100,300,300));
  subject[1] := Ellipse(Rect64(125,130,275,180));
  subject[2] := Ellipse(Rect64(125,220,275,270));
   
  SetLength(clip, 1);
  clip[0] := Ellipse(Rect64(140,70,220,320));
 
  //get the intersection of the subject and clip polygons ...
  solution := Intersect(subject, clip, frEvenOdd);
  //display polygons