I found boolean operations (union operations) do not satisfy the commutative law,
Polyline p1;
p1.addVertex(100, 200, -1.0);
p1.addVertex(120, 200, , 0.0);
p1.addVertex(120, 100, -1.0);
p1.addVertex(100, 100, 0.0);
p1.isClosed() = true;
Polyline p2;
p2.addVertex(110, 190, -1.0);
p2.addVertex(110, 210, 0);
p2.addVertex(210, 210, -1.0);
p2.addVertex(210, 190, 0.0);
p2.isClosed() = true;
auto combineResult1 = cavc::combinePolylines(p1, p2, PlineCombineMode::Union);
auto combineResult2 = cavc::combinePolylines(p2, p1, PlineCombineMode::Union);
The results are different, one is good and the other is empty.
I found boolean operations (union operations) do not satisfy the commutative law,
Polyline p1;
p1.addVertex(100, 200, -1.0);
p1.addVertex(120, 200, , 0.0);
p1.addVertex(120, 100, -1.0);
p1.addVertex(100, 100, 0.0);
p1.isClosed() = true;
Polyline p2;
p2.addVertex(110, 190, -1.0);
p2.addVertex(110, 210, 0);
p2.addVertex(210, 210, -1.0);
p2.addVertex(210, 190, 0.0);
p2.isClosed() = true;
auto combineResult1 = cavc::combinePolylines(p1, p2, PlineCombineMode::Union);
auto combineResult2 = cavc::combinePolylines(p2, p1, PlineCombineMode::Union);
The results are different, one is good and the other is empty.