gpt4 book ai didi

python - 当第一个点在 python 的多边形中最后相遇时,如何找到停止 while 循环的方法?

转载 作者:行者123 更新时间:2023-11-28 18:32:22 26 4
gpt4 key购买 nike

我需要仅使用坐标来计算多边形的周长。

我的功能:

def definePerimeter(xCoords, yCoords):

i = 0
sum = 0
while xCoords[i] != xCoords[i+1] and yCoords[i] != yCoords[i+1]:
dx = xCoords[i] - xCoords[i+1]
dy = yCoords[i] - yCoords[i+1]
dsquared = dx**2 + dy**2
result = math.sqrt(dsquared)
print "The list of segments:"
print "The segment: ", result
i += 1
sum = sum + result
print "Total 2D Perimeter is " , sum ,"m" *

给出了错误的周长(与 ArcGIS 相比)。

当第一个点在 python 中的多边形中最后一个点相遇时,如何找到停止 while 循环的方法?

最佳答案

在这里您真的不需要while 循环。您可以使用 for 循环来完成此操作,因为您要遍历多边形的所有顶点:

sum = 0
for i in xrange(len(xCoords) - 1):
sum += np.sqrt((xCoords[i] - xCoords[i + 1]) ** 2) + (yCoords[i] -yCoords[i + 1]) ** 2))
sum+=np.sqrt((xCoords[0] - xCoords[-1]) ** 2) + (yCoords[0] -yCoords[-1]) ** 2))

如果您坚持使用 while 循环来执行此操作,您可以通过以下方式执行此操作:

sum = 0
i = 0
while (i < len(xCoords) - 1):
sum += np.sqrt((xCoords[i] - xCoords[i + 1]) ** 2) + (yCoords[i] -yCoords[i + 1]) ** 2))
i += 1
sum+=np.sqrt((xCoords[0] - xCoords[-1]) ** 2) + (yCoords[0] -yCoords[-1]) ** 2))

关于python - 当第一个点在 python 的多边形中最后相遇时,如何找到停止 while 循环的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35767691/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com