1

我正在使用 HTML 的 Canvas 标签来创建一个随机生成的词云。我正在寻找最好的(也是最有效的)方法来计算在定义的区域中哪里有足够的空格来容纳一个单词。我现在能想到的唯一方法是拥有一个存储空闲空间块的空闲列表,并在页面上放置新图像时对其进行调整。

我在这里有一个示例生成器:http: //pathrazor.com/wordcloud/。但是,这个例子还没有随机旋转单词,这会增加我所问的复杂性。稍后将添加碰撞检测,如果它不是可用空间问题的解决方案的一部分。

有没有人有任何有趣的想法或以前做过这个?任何输入都会很棒。

4

1 回答 1

1

我建议这样的算法:

  • 假设你有一个空的矩形。
  • 将一个单词随机(或伪随机,或随你喜欢)放入该矩形。
  • 想象一下,这个词被包裹在它自己的小矩形中。延长该矩形的线条,直到它们到达较大容器的边界。
  • 您剩余的可用空间现在被分成四个重叠的矩形:单词前后两个垂直的矩形,上下两个水平的矩形。
  • 将这些矩形存储在内存中。
  • 您放置的下一个单词将与这些矩形中的一个或两个重叠。当它发生时,将它们进一步划分并重复该过程。

您还可以在 SE 的游戏开发网站上发现这个问题很有用。

于 2012-10-22T15:04:49.893 回答