我有一个由宽度w
和高度h
和区域A
定义的矩形边框。
我们如何在此矩形内打包n
个相等区域a
的圈数,以使A-n*a
最小。
换句话说,我们如何计算可以打包在矩形内的等大小圆的最佳数量
我的用例: 我正在使用kmeans聚类算法在地理边界框中聚类车辆。为了设置kmeans算法的簇数,我正在尝试使用圆形打包作为在应用kmeans算法之前导出簇数的一种方法。
答案 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