рдирдорд╕реНрддреЗ,
рдореБрдЭреЗ рдлрд╝реЛрд░рдо рдХреА рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдирд╣реАрдВ рдорд┐рд▓реА, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдпрд╣рд╛рдБ рдкреВрдЫрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдБред рдХреНрдпрд╛ рдкреЙрдЗрдВрдЯреНрд╕ рдХреА рд╕реВрдЪреА рд╕реЗ рдкреЙрд▓реАрдЧреЙрди рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП "рдХреИрдиреЛрдирд┐рдХрд▓" рдлреЙрд░реНрдо рд╣реИ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
list_points = []
vertices = [Point(1,1), Point(2,2), Point(3,3)]
for i in xrange(len(vertices)):
list_points.append(vertices[i])
polygon = Polygon(list_points)
рдпрд╣ рдХреЛрдб рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдЙрддреНрддрд▓_рд╣реБрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдерд╛:
poly = MultiPoint(list_points).convex_hull
рдореИрдВ рдЬреЛ рдЦреЛрдЬ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рд╕рдЯреАрдХ рдирд╣реАрдВ рд╣реИред
рдзреИрд░реНрдп рдФрд░ рдЕрдЪреНрдЫреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рдпрд╣рд╛рдБ рдмрд╛рдд рд╣реИ: рдмрд╣реБрднреБрдЬ рдХреЗ рдЫрд▓реНрд▓реЗ (рд▓реАрдирд┐рдпрд░рд┐рдВрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг) рдкреЙрдЗрдВрдЯреНрд╕ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рд╡реЗ рд╕рдордиреНрд╡рдп рдЯреБрдкрд▓реНрд╕ рдХреЗ рдЕрдиреБрдХреНрд░рдореЛрдВ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВред рд╢реЗрдкрд▓реА рдХреЗ рд▓рд┐рдП рдЕрдВрдХ рдФрд░ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪреАрдЬреЗрдВ рд╣реИрдВред рдЖрдкрдХреЛ рдкреЙрд▓реАрдЧреЙрди рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рдХрджрд░:
>>> points = [Point(0,0), Point(2,2), Point(2,0)]
>>> coords = sum(map(list, (p.coords for p in points)), [])
>>> poly = Polygon(coords)
>>> poly.area
2.0
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рд░ рд╕рдордп рдЧреБрдЧрд▓реА рдХрд░рддрд╛ рд░рд╣рддрд╛ рд╣реВрдВ, рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ (рдореБрдЭреЗ рдпрд╣ рдЗрд╕ рддрд░рд╣ рдЕрдзрд┐рдХ рдкрдардиреАрдп рд▓рдЧрддрд╛ рд╣реИ):
>>> points = [Point(0,0), Point(2,2), Point(2,0)]
>>> coords = [(p.x, p.y) for p in points]
>>> poly = Polygon(coords)
>>> poly.area
2.0
рдЯрд╛рдЗрдорд┐рдЯ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдЪреАрдЬреЗрдВ рдХреИрд╢ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ рд▓реЗрдХрд┐рди @sgillies рдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд▓рдЧрд╛рддрд╛рд░ 2/3 рддреЗрдЬ рд▓рдЧрддрд╛ рд╣реИ (~ 65┬╡s рдореЗрд░рд╛ рдмрдирд╛рдо ~ 45┬╡s рдЙрд╕рдХрд╛) рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдкрдХреЛ рдЧрдЬрд┐рд▓рд┐рдпрди рдкреЙрдЗрдВрдЯреНрд╕ рдпрд╛ рдкреЙрд▓реА рдХреЗ рд▓рд┐рдП рд╕реБрдкрд░ рдЕрд▓реНрдЯреНрд░рд╛ рд╣рд╛рд░реНрдбрдХреЛрд░ рдкреНрд░рджрд░реНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЙрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдлрд┐рд░ рдХрднреА рдЗрддрдирд╛ рдереЛрдбрд╝рд╛ рддреЗрдЬ:
points = [Point(0,0), Point(2,2), Point(2,0)]
coords = [p.coords[:][0] for p in points]
poly = Polygon(coords)
poly.area
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдлрд┐рд░ рдХрднреА рдЗрддрдирд╛ рдереЛрдбрд╝рд╛ рддреЗрдЬ: