用 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

更新于:2021 年 10 月 12 日

2K+ 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始
广告