/** * Calculate intersection of left site of polygon cut multiple times by * different splitting lines. The result is on left site of each of * 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 intersectionOfLeftSideOfMultipleCuts(MultiPolygonList2d multiPolygon, LinePoints2d... lines) { MultiPolygonList2d leftMultiPolygon = multiPolygon; for (LinePoints2d line : lines) { MultiPolygonSplitResult splitResult = splitMultiPolygon(leftMultiPolygon, line); leftMultiPolygon = splitResult.getLeftMultiPolygon(); } return leftMultiPolygon; }
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; }
/** * 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; }
MultiPolygonSplitResult middleSplit = PolygonSplitHelper.splitMultiPolygon(new MultiPolygonList2d( new PolygonList2d(borderList)), bLine); pRecHeight)); MultiPolygonSplitResult topSplit = PolygonSplitHelper.splitMultiPolygon(centerMP, rLine); pRecHeight - l3)); MultiPolygonSplitResult topSplit = PolygonSplitHelper.splitMultiPolygon(centerMP, tLine); MultiPolygonSplitResult topSplit = PolygonSplitHelper.splitMultiPolygon(centerMP, tLine);
MultiPolygonSplitResult middleSplit = PolygonSplitHelper.splitMultiPolygon( new MultiPolygonList2d(borderPolygon), mLine);
MultiPolygonSplitResult middleSplit = PolygonSplitHelper.splitMultiPolygon( new MultiPolygonList2d(borderPolygon), middleLine); MultiPolygonList2d bottomMP = middleSplit.getRightMultiPolygon(); MultiPolygonSplitResult topSplit = PolygonSplitHelper.splitMultiPolygon(topMP, topLine); MultiPolygonSplitResult bottomSplit = PolygonSplitHelper.splitMultiPolygon(bottomMP, bottomLine);
MultiPolygonSplitResult leftSplit = PolygonSplitHelper.splitMultiPolygon(new MultiPolygonList2d(borderPolygon), lLine);
PolygonList2d borderPolygon = new PolygonList2d(outline); MultiPolygonSplitResult middleSplit = PolygonSplitHelper.splitMultiPolygon( new MultiPolygonList2d(borderPolygon), middleRoofLine);
MultiPolygonSplitResult leftSplit = PolygonSplitHelper.splitMultiPolygon(new MultiPolygonList2d(borderPolygon), lLine); MultiPolygonList2d middleMP = leftSplit.getRightMultiPolygon(); MultiPolygonSplitResult rightSplit = PolygonSplitHelper.splitMultiPolygon(middleMP, rLine);
PolygonList2d borderPolygon = new PolygonList2d(outline); MultiPolygonSplitResult middleSplit = PolygonSplitHelper.splitMultiPolygon( new MultiPolygonList2d(borderPolygon), middleRoofLine);