在Python中查找多边形的周长
假设我们有一个有序点的列表,表示二维平面上简单多边形的端点。我们必须找到这个多边形的周长。
所以,如果输入是points = [(0,0),(0,5),(3,5),(3,0)],输出将是16,因为
两边长为3,两边长为5,所以25 + 23 = 16。
为了解决这个问题,我们将按照以下步骤进行-
- 定义函数getInfo()。这将获取x1、y1、x2、y2
- 返回√(x1-x2)^2+(y1-y2)^2(欧几里得距离), 即在(x1,y1)和(x2,y2)之间。
- 从主方法中,执行以下操作
- N := points的大小
- (firstx,firsty):= points [0]
- (prevx, prevy):=(firstx,firsty)
- res:= 0
- 对于i在1到N-1的范围,执行以下操作
- (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