我正在寻找一种简单的算法,给定一个宽度为w且高度为h的矩形,将矩形分成n个或多或少相等大小和形状的矩形,并计算这些矩形的中心。
编辑:忘记提及形状应尽可能与正方形相似。
任何提示如何开始?
答案 0 :(得分:8)
一种简单的算法是垂直分割成n个相等大小的高度为h和宽度为w / n的条带。
如果你假设初始矩形有角(0,0)和(w,h),那么使用这个算法,i th 矩形将具有中心(w / n *(i +½) ),h / 2),0< = i< Ñ
更新:尝试将数字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)的矩形,它接近正方形。