打包一个大小相等的圆形python

时间:2016-07-12 11:54:08

标签: python

我有一个由宽度w和高度h和区域A定义的矩形边框。

我们如何在此矩形内打包n个相等区域a的圈数,以使A-n*a最小。

换句话说,我们如何计算可以打包在矩形内的等大小圆的最佳数量

我的用例: 我正在使用kmeans聚类算法在地理边界框中聚类车辆。为了设置kmeans算法的簇数,我正在尝试使用圆形打包作为在应用kmeans算法之前导出簇数的一种方法。

1 个答案:

答案 0 :(得分:1)

编辑:编辑以帮助OP获取一个数字,该数字可以帮助根据平面中的拟合圆确定k-means群集的数量,并最小化未覆盖的位置。

from math import sqrt, pi

def get_approximate_k(rectangle_area, circle_area):
    # Making use of the fact that in an infinite hexagonal packing, the packing ratio is (pi*sqrt(3)/6)
    return int((rectangle_area * pi * sqrt(3))/(6 * circle_area))

print get_approximate_k(10*100, 12) # Returns 75