一个比较纠结的有关问题。将一个固定长宽的矩形,随机分割成若干随机大小的矩形

一个比较纠结的问题。将一个固定长宽的矩形,随机分割成若干随机大小的矩形
有木有比较好一点的算法。。。

我的思路是:
1:得到总面积,随机得到分割小矩形的个数。
2:将总面积分给若干个小矩形。
3:计算小矩形长和等于总长,宽和等于总宽,取其中一种。

有木有更好的办法,高人指点一下!!!感谢。最好是有java代码。。

原帖:http://bbs.****.net/topics/390916298
------解决思路----------------------
分割的是周长而不是面积?一个比较纠结的有关问题。将一个固定长宽的矩形,随机分割成若干随机大小的矩形
那么 r 分割成 r1、r2 时按周长来{
  r1.周长 = 随机返回不包括首尾(0,r.周长)
  r2.周长 = r.周长 - r1.周长
  r1、r2 的长宽再从各自的半个周长中随机分割
}
------解决思路----------------------
我觉得如文中方法不可行。
总面积==随机得到分割小矩形的面积之和,如果严格成立,则:
将总面积置为1=2^0,其余的小矩形的面积只能是2^(-j)。
比如,1=2^(-1)+12*2^(-2)...
你只需要随机产生满足条件的小矩形的各个尺度上的数目即可。
------解决思路----------------------
个比较纠结的问题。将一个固定长宽的矩形,随机分割成若干随机大小的矩形
问题分析:
“计算小矩形长和等于总长,宽和等于总宽,取其中一种”
根据这一条件,已经把答案固定死: 要么画横线要么画竖线分割矩形,不可能出现交叉线,否则长度不符合要求,可以证明
1.小矩形长和等于总长
这个是随机生成N条竖线分割矩形
2..小矩形宽和等于总宽
这个是随机生成N条横线分割矩形

如果没有这一条件:
可以这样分割,在矩形内随机生成N点不重叠的点
然后从上而下或者从左到右(根据随机点的坐标位置)的顺序依次分割矩形




------解决思路----------------------
试试我这个方法。
(1)  如果要求分割的矩形数量为1,则返回自身
(2)  如果要求分割的矩形数量为2,则在四条边(四个顶点除外)上随机取一个点,可以分割两个矩形,完成。
(3) 如果要求分割的矩形为n,且n > 2,则先递归分出n - 1个小矩形,然后任取一个小矩形,分割出2个小矩形,完成。