def quadrant_split(square_poly): sq = gp.Poly(square_poly) upper_left = box(minx=sq.left, miny=sq.p.centroid.y, maxx=sq.p.centroid.x, maxy=sq.top, ccw=True) upper_right = box(minx=sq.p.centroid.x, miny=sq.p.centroid.y, maxx=sq.right, maxy=sq.top, ccw=True) lower_right = box(minx=sq.p.centroid.x, miny=sq.bottom, maxx=sq.right, maxy=sq.p.centroid.y, ccw=True) lower_left = box(minx=sq.left, miny=sq.bottom, maxx=sq.p.centroid.x, maxy=sq.p.centroid.y, ccw=True) quadrants = gp.merge_Polygons( [upper_left, upper_right, lower_right, lower_left]) return quadrants
def split_random_bezier( poly, x0=None, x1=None, n_eval_points=50, ): line = random_bezier_subdivide(poly, x0=x0, x1=x1, n_eval_points=n_eval_points) return gp.merge_Polygons(split_poly(poly, line))
def mpoly(self): return gp.merge_Polygons(self.polys)
def split_random_line_gen(poly, x0gen=None, x1gen=None): line = random_line_subdivide_gen(poly, x0gen=x0gen, x1gen=x1gen) return gp.merge_Polygons(split_poly(poly, line))
def split_along_longest_side_of_min_rectangle(poly, xgen=None): line = longest_side_of_min_rectangle_subdivide(poly=poly, xgen=xgen) return gp.merge_Polygons(split_poly(poly, line))
def split_poly(poly, line): return gp.merge_Polygons(poly.difference(line.buffer(1e-6)))