play-voronoi

传说中有个叫SSW的,我玩了又蝗了又玩了又蝗了的游戏,里面的星图是我觉得比较有意思的东西。最近心血来潮弄了个Unity来耍,就想着也画个这样的图出来耍耍。

所谓星图

这东西其实就是一个平面内的无向连通图,顶点比较均匀地分布在一个圆内,度数为[1,4],且所有边不存在顶点以外的交点。

以前fox勤奋的时候,每次游戏轮回之后星图都会更新的,回想一下每次至少都是有几百个顶点的图,我想他们程序猿总不至于这么傻逼每次都手动画吧,肯定是弄了个什么算法扑通一下就出来一坨数据才对。

怎么弄呢

想怎么弄,首先要知道自己要弄个啥。

  1. 在一个圆内生成一坨均匀分布的顶点
  2. 以这些顶点建立一个最小度数为1最大度数为4,且所有边不存在顶点以外的交点无向连通图

想来想去好像就上面这丁点条件就够了,咦,好像很简单的样子?然并卵,并不知道该怎么办。

问了下大牛同学们,说把每个顶点与最近的4个顶点连起来,顶多再去掉交叉的边就完了,好像还能证明?我感觉就是把问题换个描述?我只是想把这东西弄出来,才不要又跳到图论的坑里面去啊。

我还直觉这东西肯定几十年前就被研究透了,出来一大坨算法和实现,可以扑通一下就弄出来的那种,毕竟是fox也弄出来了的……

还是谷鸽屌

所以还是上秘密武器大谷鸽吧。

然而这东西也不好搜啊,换了好多遍关键词才找到像是自己想要的答案的相关文章,然后顺藤摸瓜找到了关键的几个东西。虽然并不确定fox是不是类似这样搞的,但耍了个demo后感觉差不多样子,估计就是了吧。

关键就是这几个东西了,算法看上去似乎都不复杂,好像应用还很广呢。里面到底是什么样个究竟就先不管啦,反正弄的demo能把数据搞出来了。

饮杯茶O(∩_∩)O~