如何从SymPy Polygon中提取坐标并转换为列表
将SymPy Polygon对象转换为polycord格式坐标列表
要把分割得到的SymPy Polygon对象转换成你需要的polycord格式坐标列表,直接利用Polygon的vertices属性提取顶点,再处理成闭合列表即可,修改后的代码如下:
from sympy import Polygon, Line polycord=[(0, 0), (100, 0), (100, 300), (0, 300), (0, 0)] T_sec= Polygon(*polycord) t = T_sec.cut_section(Line((0, 200), slope=0)) upper_segment, lower_segment = t poly_up=upper_segment # 提取顶点并转换为坐标元组列表 poly_up_cord = [(p.x, p.y) for p in poly_up.vertices] # 追加第一个坐标,保持和polycord一致的闭合格式 poly_up_cord.append(poly_up_cord[0]) print(poly_up_cord)
关键步骤说明:
poly_up.vertices会返回多边形的所有顶点,是一个包含SymPy Point对象的元组。- 用列表推导式遍历每个Point对象,通过
p.x和p.y直接获取坐标值,组成和原polycord结构一致的元组。 - 最后追加第一个坐标到列表末尾,确保多边形是闭合的,和输入的
polycord格式完全匹配。
如果你的多边形顶点包含符号化坐标(非数值),可以用(float(p.x), float(p.y))或者(p.x.evalf(), p.y.evalf())来转换为数值类型。
内容的提问来源于stack exchange,提问作者SW84
相关产品推荐
相关产品推荐

