gpt4 book ai didi

python - Python 中二维凸包的周长

转载 作者:行者123 更新时间:2023-12-01 01:35:51 36 4
gpt4 key购买 nike

如何用 Python 计算凸包的周长?我知道 SciPy 有用于凸包的 area 参数;但是,我需要周长

最佳答案

您可以迭代凸包的点并计算连续点之间的距离:

import numpy as np
from scipy.spatial.qhull import ConvexHull
from scipy.spatial.distance import euclidean

points = np.random.rand(30, 2)
hull = ConvexHull(points)

vertices = hull.vertices.tolist() + [hull.vertices[0]]
perimeter = np.sum([euclidean(x, y) for x, y in zip(points[vertices], points[vertices][1:])])
print(perimeter)

输出

3.11

注意:您还需要添加一对(最后一个、第一个)

更新

作为替代方案,鉴于数据是二维的,您可以使用 hull.area。即上述方法返回的值等于area属性的值。如果想要真实的面积,需要查询hull.volume

进一步

  1. What is area in scipy convex hull

关于python - Python 中二维凸包的周长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52403793/

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