我目前正在编写一个程序,它用以下坐标计算一个几何图形的周长:(0.0,0.0) (1.0,5.0) (4.0,8.0) (9.0,4.0) (7.0,1.0)周长应该是26.4214。然而,我的程序打印一个较低的数字。
我知道一个事实,误差在函数的周长,但我不知道如何解决它。如果有人知道怎么做,他们的帮助将是非常感谢的。
非常感谢
def distancia_entre_dos_punts(x1,y1,x2,y2):
difX=x1-x2
difY=y1-y2
distancia=math.sqrt(difX*difX+difY*difY)
return distancia
def perimetre(pol, num_vertexs):
perim= 0
for i in range(0, num_vertexs-1):
perim=perim+distancia_entre_dos_punts(pol[i,0],pol[i,1],pol[i+1,0],pol[i+1,1]) <----- Error?
perim= perim+distancia_entre_dos_punts(pol[num_vertexs,0],pol[num_vertexs,1],pol[0,0],pol[0,1])<----- Error?
return perim发布于 2022-05-10 14:01:59
我认为压痕有问题。
def perimetre(pol, num_vertexs):
perim= 0
for i in range(0, num_vertexs-1):
perim=perim+distancia_entre_dos_punts(pol[i,0],pol[i,1],pol[i+1,0],pol[i+1,1]) <----- Error?
perim= perim+distancia_entre_dos_punts(pol[num_vertexs,0],pol[num_vertexs,1],pol[0,0],pol[0,1])<----- Error?
return perim在这里,解决方案:
import numpy as np
import math
pol = np.array([[0.0, 0.0],[1.0, 5.0],[4.0, 8.0],[9.0, 4.0],[7.0, 1.0]])
print(pol)
def distancia_entre_dos_punts(x1,y1,x2,y2):
difX=x1-x2
difY=y1-y2
distancia=math.sqrt(difX*difX+difY*difY)
return distancia
def perimetre(pol):
num_vertexs = pol.shape[0]
perim= 0
for i in range(0, num_vertexs-1):
perim=perim+distancia_entre_dos_punts(pol[i,0],pol[i,1],pol[i+1,0],pol[i+1,1])
perim= perim+distancia_entre_dos_punts(pol[num_vertexs-1,0],pol[num_vertexs-1,1],pol[0,0],pol[0,1])
return perim
print(perimetre(pol))https://stackoverflow.com/questions/72187684
复制相似问题