我正试图用形状来识别在扇形和矩形之间相互作用的区域。 因此,我的问题分为两部分:
如何将扇形定义(创建,表示)为匀称对象(三角形也足够),我的输入是坐标x,y,起始角度,终止角度,半径。
如何计算扇区列表和多边形(矩形)之间相互作用的面积
谢谢
答案 0 :(得分:2)
您可以使用以下功能将扇形创建为匀称的对象:
from shapely.geometry import Point, Polygon
import math
def sector(center, start_angle, end_angle, radius, steps=200):
def polar_point(origin_point, angle, distance):
return [origin_point.x + math.sin(math.radians(angle)) * distance, origin_point.y + math.cos(math.radians(angle)) * distance]
if start_angle > end_angle:
start_angle = start_angle - 360
else:
pass
step_angle_width = (end_angle-start_angle) / steps
sector_width = (end_angle-start_angle)
segment_vertices = []
segment_vertices.append(polar_point(center, 0,0))
segment_vertices.append(polar_point(center, start_angle,radius))
for z in range(1, steps):
segment_vertices.append((polar_point(center, start_angle + z * step_angle_width,radius)))
segment_vertices.append(polar_point(center, start_angle+sector_width,radius))
segment_vertices.append(polar_point(center, 0,0))
return Polygon(segment_vertices)
中心是一个匀称的点对象,台阶定义了曲线的分辨率。
因此您可以通过以下方式创建扇区:
center = Point(0,0)
sect = sector(center, 10, 60, 20)
要首先计算交叉点的面积,请按照以下方式计算交叉点的形状:
square = Polygon([(0,0), (0,10),(10,10), (10,0)])
intersection = sect.intersection(square)
此时,您可以通过以下方式获取区域:
calculated_area = intersection.area