我是 Wordle 的创造者。以下是 Wordle 的实际工作方式:
数单词,扔掉无聊的单词,按计数排序,降序排列。保留一些 N 的前 N 个单词。为每个单词分配与其数量成正比的字体大小。使用 Java2D API 为每个单词生成一个 Java2D 形状。
每个单词“想要”在某个地方,例如“在垂直中心的某个随机 x 位置”。按照频率降序,对每个单词执行以下操作:
place the word where it wants to be while it intersects any of the previously placed words move it one step along an ever-increasing spiral
而已。 困难 的部分是有效地进行交叉测试,为此我使用了最后一次命中缓存、分层边界框和四叉树空间索引(所有这些你都可以通过一些勤奋的谷歌搜索了解更多信息)。
编辑:正如 Reto Aebersold 指出的那样,现在有一个免费的书籍章节,涵盖了同样的领域:美丽的可视化,第 3 章:Wordle