You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算给定坐标的多边形每一条边的长度?

多边形边长计算实现方案

你提到的math.dist配合for循环的方案完全可以实现需求,具体实现逻辑和代码如下:

实现逻辑

  1. 先对原始坐标做解包处理:你给出的坐标是三层嵌套结构,需要先提取出所有(x,y)格式的二维点
  2. 遍历点序列,依次计算当前点与下一个点的欧氏距离:因为是闭合多边形,最后一个点的下一个点取第一个点即可
  3. 直接调用Python标准库math.dist计算两点距离,不需要自己实现欧氏距离公式

示例代码

import math

# 原始坐标(已补数值分隔逗号,若你原始数据为空格分隔的字符串,需先做分割转整数处理)
raw_coords = [[[623, 284]], [[526, 256]], [[532, 189]], [[504, 166]], 
              [[323, 175]], [[276, 219]], [[119, 221]], [[1, 272]], 
              [[0, 473]], [[615, 479]]]
# 解包得到二维点列表
points = [item[0] for item in raw_coords]
point_count = len(points)
side_lengths = []

for i in range(point_count):
    current_p = points[i]
    next_p = points[(i+1) % point_count]
    # 距离保留2位小数,可按需调整精度
    side_length = round(math.dist(current_p, next_p), 2)
    side_lengths.append(side_length)

# 输出所有边长度
print(side_lengths)

其他可行方案

如果你后续需要处理更多多边形相关的几何计算(比如面积、拓扑判断、交点计算等),可以用第三方几何库shapely实现更简洁的调用:

from shapely.geometry import Polygon

raw_coords = [[[623, 284]], [[526, 256]], [[532, 189]], [[504, 166]], 
              [[323, 175]], [[276, 219]], [[119, 221]], [[1, 272]], 
              [[0, 473]], [[615, 479]]]
points = [item[0] for item in raw_coords]
polygon = Polygon(points)
# 直接获取所有边的长度
side_lengths = [segment.length for segment in polygon.exterior.segments]

注意事项

如果不需要计算多边形闭合边(即最后一个点到第一个点的边),将上述循环中(i+1) % point_count改为i+1,同时循环范围改为range(point_count - 1)即可。

内容的提问来源于stack exchange,提问作者user16731999

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 05:48:02