将矩形分成随机形状的多边形

时间:2010-12-02 00:20:43

标签: algorithm polygon shapes

就像标题所说,我需要将一个矩形分成随机形状的多边形。

示例,包含7个多边形:

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

我不知道是否已经存在一个算法,但我似乎无法理解这一点。

我并不特别关心你回答的语言,但我将在Java / Swing中实现。

2 个答案:

答案 0 :(得分:14)

您可以在矩形上放下一堆随机点,然后计算Voronoi图。

Here is a Java/Swing implementation.

我做了一些样本(但是using Mathematica,而不是上面的实现)

alt text

alt text

alt text

HTH!

答案 1 :(得分:4)

我会在整个矩形上绘制一堆随机线,然后在每个线交叉处“分割”线条,这样你基本上就会有某种线条。然后删除任意数量的随机线段,直到达到所需的多边形数量。

编辑:所以对于你的样本,在添加行后会是这样的:

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