/** * Calculate union of left site of polygon cut multiple times by different * splitting lines. The result is on left site of at least of one splitting * lines. * * @param multiPolygon * the polygon to cut * @param lines * splitting lines * @return the polygon which is on left site of each of splitting lines */ public static MultiPolygonList2d unionOfLeftSideOfMultipleCuts(MultiPolygonList2d multiPolygon, LinePoints2d... lines) { MultiPolygonList2d leftMultiPolygon = new MultiPolygonList2d(); MultiPolygonList2d rightMultiPolygon = multiPolygon; for (LinePoints2d line : lines) { MultiPolygonSplitResult splitResult = splitMultiPolygon(rightMultiPolygon, line); leftMultiPolygon.getPolygons().addAll(splitResult.getLeftMultiPolygon().getPolygons()); rightMultiPolygon = splitResult.getRightMultiPolygon(); } return leftMultiPolygon; }
MultiPolygonList2d bottomMP = middleSplit.getRightMultiPolygon();
MultiPolygonList2d topMP = leftSplit.getRightMultiPolygon();
MultiPolygonList2d bottomMP = middleSplit.getRightMultiPolygon(); MultiPolygonList2d topMiddleMP = topSplit.getRightMultiPolygon(); bottomMP = bottomSplit.getRightMultiPolygon(); MultiPolygonList2d bottomMiddleMP = bottomSplit.getLeftMultiPolygon();
MultiPolygonList2d middleMP = leftSplit.getRightMultiPolygon(); middleMP = rightSplit.getRightMultiPolygon();
MultiPolygonList2d bottomMP = middleSplit.getRightMultiPolygon();
MultiPolygonList2d bottomMP = middleSplit.getRightMultiPolygon();
public static MultiPolygonList2d[] createMP(PolygonList2d borderPolygon, LinePoints2d[] lines) { MultiPolygonList2d topMP = new MultiPolygonList2d(borderPolygon); MultiPolygonList2d[] mps = new MultiPolygonList2d[lines.length - 1]; for (int i = 1; i < lines.length; i++) { MultiPolygonSplitResult middleSplit = PolygonSplitHelper.splitMultiPolygon(topMP, lines[i]); topMP = middleSplit.getLeftMultiPolygon(); mps[i - 1] = middleSplit.getRightMultiPolygon(); } return mps; }