@@ -383,27 +440,34 @@ public class WeilerAtherton {
.streamPoints(clippingFace)
.allMatch(p->contains(subject,p));
if(cap){
if(subInClip){
polygons.add(subjectCandidat);
}
elseif(clipInSub){
polygons.add(clippingCandidat);
}
}
else{
if(subInClip){
polygons.add(clippingCandidat);
}
elseif(clipInSub){
polygons.add(subjectCandidat);
}
else{
polygons.add(subjectCandidat);
polygons.add(clippingCandidat);
}
switch(operation){
caseINTERSECTION:{
if(subInClip){
polygons.add(subjectCandidat);
}
elseif(clipInSub){
polygons.add(clippingCandidat);
}
}break;
caseUNION:{
if(subInClip){
polygons.add(clippingCandidat);
}
elseif(clipInSub){
polygons.add(subjectCandidat);
}
else{
polygons.add(subjectCandidat);
polygons.add(clippingCandidat);
}
}break;
caseSUBTRACTION:
default:{
if(clipInSub){
thrownewIllegalArgumentException("subtracting a polygon which is contained in its counterpart will produce a polygon with a hole which is not supported.");