public MultiPolygonList2d getTopMultiPolygons() { MultiPolygonList2d mp = new MultiPolygonList2d(); Set<PolygonList2d> polygons = mp.getPolygons(); for (SplitPolygon s : this.splitPolygons) { polygons.addAll(s.getTopMultiPolygons().getPolygons()); } return mp; }
private static MultiPolygonList2d toMultiPolygon(List<List<Point2d>> leftPolygons) { List<PolygonList2d> polygons = new ArrayList<PolygonList2d>(); for (List<Point2d> polygon : leftPolygons) { polygons.add(new PolygonList2d(polygon)); } return new MultiPolygonList2d(polygons); }
private static List<List<Point2d>> toList(MultiPolygonList2d pPolygon) { List<List<Point2d>> ret = new ArrayList<List<Point2d>>(); for (PolygonList2d polygon : pPolygon.getPolygons()) { List<Point2d> poly = polygon.getPoints(); ret.add(poly); } return ret; }
public static PlygonSplitUtil.SplitResult split(PolygonList2d polygon, LinePoints2d splitingLine) { return split(new MultiPolygonList2d(polygon), splitingLine); }
public static PlygonSplitUtil.SplitResult split(MultiPolygonList2d multiPolygon, LinePoints2d splittingLine) { final List<List<Point2d>> leftPolygons = new ArrayList<List<Point2d>>(); final List<List<Point2d>> rightPolygons = new ArrayList<List<Point2d>>(); for (PolygonList2d polygon : multiPolygon.getPolygons()) { // FIXME XXX holes are missing! SplitResult split = PlygonSplitUtil.split(polygon.getPoints(), splittingLine); leftPolygons.addAll(split.getLeftPolygons()); rightPolygons.addAll(split.getRightPolygons()); } return new PlygonSplitUtil.SplitResult(leftPolygons, rightPolygons); }
public MultiPolygonList2d getBottomMultiPolygons() { MultiPolygonList2d mp = new MultiPolygonList2d(); Set<PolygonList2d> polygons = mp.getPolygons(); for (SplitPolygon s : this.splitPolygons) { polygons.addAll(s.getBottomMultiPolygons().getPolygons()); } return mp; }
/** * Create roof surface polygons. * * @param outlinePolygon * @param middlePoint * @return */ private MultiPolygonList2d[] createMP(List<Point2d> outlinePolygon, Point2d middlePoint) { int size = outlinePolygon.size(); MultiPolygonList2d[] ret = new MultiPolygonList2d[size]; for (int i = 0; i < size; i++) { Point2d p1 = outlinePolygon.get(i); Point2d p2 = outlinePolygon.get((i + 1) % size); ret[i] = new MultiPolygonList2d(new PolygonList2d(p1, p2, middlePoint)); } return ret; } }
for (PolygonList2d polygon : pMultiPolygons.getPolygons()) {
public MultiPolygonList2d getBottomMultiPolygons() { MultiPolygonList2d mp = new MultiPolygonList2d(); Set<PolygonList2d> polygons = mp.getPolygons(); for (List<Integer> p : this.polygonsLeft) { List<Point2d> polygon = makeListFromIndex(this.polygonExtanded, p); PolygonList2d polygonList = new PolygonList2d(polygon); polygons.add(polygonList); } return mp; }
/** * Create roof surface polygons. * * @param outlineConvexHull * @param outlineList * @param outlinePolygon * @param middlePoint * @return */ private MultiPolygonList2d[] createMP(List<Point2d> outlineConvexHull, List<Point2d> outlineList, Point2d middlePoint) { MultiPolygonList2d outlineMultiPolygon = new MultiPolygonList2d(new PolygonList2d(outlineList)); int size = outlineConvexHull.size(); MultiPolygonList2d[] ret = new MultiPolygonList2d[size]; for (int i = 0; i < size; i++) { Point2d p1 = outlineConvexHull.get(i); Point2d p2 = outlineConvexHull.get((i + 1) % size); ret[i] = intersectionOfLeftSideOfMultipleCuts(outlineMultiPolygon, p2, middlePoint, p1); } return ret; }
public MultiPolygonList2d getTopMultiPolygons() { MultiPolygonList2d mp = new MultiPolygonList2d(); Set<PolygonList2d> polygons = mp.getPolygons(); for (List<Integer> p : this.polygonsRight) { List<Point2d> polygon = makeListFromIndex(this.polygonExtanded, p); PolygonList2d polygonList = new PolygonList2d(polygon); polygons.add(polygonList); } return mp; }
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; }
public static void buildFlatRoof(PolygonList2d borderPolygon, MeshFactory meshRoof, TextureData roofTexture) { MultiPolygonList2d topMP = new MultiPolygonList2d(borderPolygon); // build flat Point3d planeRightTopPoint = new Point3d(0, 0, 0); Vector3d nt = new Vector3d(0, 1, 0); Plane3d planeTop = new Plane3d(planeRightTopPoint, nt); Vector3d roofTopLineVector = new Vector3d(-1d, 0, 0); MeshFactoryUtil.addPolygonToRoofMesh(meshRoof, topMP, planeTop, roofTopLineVector, roofTexture); }
MultiPolygonList2d mPoly = new MultiPolygonList2d(poly); mPoly.getPolygons().addAll(createUnderRoofPolygons(startPoint, endPoint, wallHeight, roofHeightCalculator)); catchFaceFactory, tm, counterClockwise); for (PolygonList2d polygon : mPoly.getPolygons()) {
MeshFactoryUtil.addPolygonToRoofMesh(meshRoof, new MultiPolygonList2d(polygon), plane, edgeNormal, roofTexture);
MultiPolygonSplitResult middleSplit = PolygonSplitHelper.splitMultiPolygon(new MultiPolygonList2d( new PolygonList2d(borderList)), bLine); for (PolygonList2d polygon : centerMP.getPolygons()) {
MultiPolygonList2d topMP = new MultiPolygonList2d(borderPolygon);
new MultiPolygonList2d(borderPolygon), mLine);
MultiPolygonSplitResult leftSplit = PolygonSplitHelper.splitMultiPolygon(new MultiPolygonList2d(borderPolygon), lLine);