2010-12-02 273 views
7

就像标题所说的那样,我需要将矩形划分为随机形状的多边形。将矩形划分为随机形状的多边形

例如,7个多边形:

+--------+--------+ 
|\  | 2 | 
| \ 1 |''--..__| 
| ------| 5  | 
| 3/ \________| 
| / /\ 6 | 
|__/ 4/\______| 
| /7  | 
+-----+-----------+ 

我不知道是否有一个算法已经在那里了,但我似乎无法让我的头解决这个问题。

我并不特别在乎你回答的是什么语言,但我将在Java/Swing中实现。

+2

我不认为你的意思是“随机形”的多边形;在你的例子中那些多边形不是随机的形状。你的意思是说你不关心多边形的形状?这与“随机形状”不同。 – 2010-12-02 00:25:42

+0

@McWafflestix:那么,“随机形”意味着什么?我的意思是,如果多次运行此算法,生成的多边形将各不相同。 – 2010-12-02 00:43:26

+0

“随机”意味着与该集合中的其他成员没有关系;对于按照您指示的方式分解的矩形,某些成员与其他成员有关系(例如,常见边缘长度)。 – 2010-12-02 00:45:50

回答

3

我会在整个矩形上绘制一束随机线,然后在每条线交叉处“分割”线条,这样基本上就有了一些网线。然后根据需要去除尽可能多的随机线段,直到达到所需数量的多边形。

编辑:那么您样品它会一直这样添加行之后:

+----+---+----+---+ 
|\'--.\_/| / | 
| \ X |''/-..__| 
|--\--+-\+-/------| 
|___\/___\/_______| 
| /\ /\  | 
|__/__\_/|_\______| 
|/ X | \  | 
++----+-++---+----+