Простой алгоритм состоит в том, чтобы разделить по вертикали на n полос одинакового размера высотой h и шириной w / n.
Если вы предполагаете, что исходный прямоугольник имеет углы (0,0) и (w, h)затем, используя этот алгоритм, прямоугольник i th будет иметь центр (w / n * (i + ½), h / 2) для 0 <= i <n. </p>
Обновление: попробуйте найти все разложения числа 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), что близко к квадрату.