Beispiel #1
0
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
Beispiel #2
0
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))
Beispiel #3
0
 def mpoly(self):
     return gp.merge_Polygons(self.polys)
Beispiel #4
0
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))
Beispiel #5
0
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))
Beispiel #6
0
def split_poly(poly, line):
    return gp.merge_Polygons(poly.difference(line.buffer(1e-6)))