用 Python 查找多边形周长的程序
假设我们有一个有序点列表,其表示一个二维平面上的简单多边形端点。我们必须找出此多边形的周长。
因此,如果输入类似于 points = [(0, 0), (0,5), (3, 5), (3,0)], 那么输出将为 16,因为
两边边长为 3,两边边长为 5,所以 2*5 + 2*3 = 16。
为了解决这个问题,我们将遵循以下步骤 −
- 定义一个函数 getInfo() 。它将获取 x1、y1、x2 和 y2
- 返回 ((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)) 的平方根,它是欧几里得距离
- (x1,y1)和(x2,y2)之间的距离
- 在主方法中,执行以下操作
- N := points 的大小
- (firstx, firsty) := points[0]
- (prevx, prevy) := (firstx, firsty)
- res := 0
- 从 1 到 N-1 范围内的 i 执行以下操作
- (nextx, nexty) := points[i]
- res := res + getInfo(prevx, prevy, nextx, nexty)
- prevx := nextx
- prevy := nexty
- res := res + getInfo(prevx, prevy, firstx, firsty)
- 返回 res
示例
让我们看看以下实现,以更好地理解 −
from math import sqrt def getInfo(x1, y1, x2, y2): return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)) def solve(points): N = len(points) firstx, firsty = points[0] prevx, prevy = firstx, firsty res = 0 for i in range(1, N): nextx, nexty = points[i] res = res + getInfo(prevx,prevy,nextx,nexty) prevx = nextx prevy = nexty res = res + getInfo(prevx,prevy,firstx,firsty) return res points = [(0, 0), (0,5), (3, 5), (3,0)] print(solve(points))
输入
[(0, 0), (0,5), (3, 5), (3,0)]
输出
16.0
广告