我正在寻找一种简单的算法,给定一个宽度为w和高度为h的矩形,将矩形分成n个或多或少相等大小和形状的矩形,并计算这些矩形的中心.
编辑:忘了提到形状应尽可能与正方形相似.
任何提示如何开始?
一种简单的算法是垂直分割成高度为h和宽度为w/n的n个相等大小的条带.
如果你假设初始矩形有角(0,0)和(w,h),那么使用这个算法,第i 个矩形将具有中心(w/n*(i +½),h/2),0 < = i <n.
更新:尝试将数字n的所有因子分解成因子对(i,j),使得i*j = n,并找到因子对,使得因子的比率最接近矩形的边的比率.然后使用这两个因子来创建较小矩形的规则网格.
例如,当n为10时,您可以在(1,10),(2,5),(5,2)和(10,1)之间进行选择.以下是使用因子(5,2)的示例网格:
------------------------------------ | | | | | | | | | | | | ------------------------------------ | | | | | | | | | | | | ------------------------------------
如果您的初始矩形的宽度为60,高度为20,则使用因子对(5,2)将得到十个大小(60/5,20/2)=(12,10)的矩形,它接近正方形.