基于生命游戏(game of life)衍生的一个图形玩具
生命游戏应该都知道, 我这边是改了一下设定的规则, 然后在有限的格子上生成图案.
先上图:

具体的用法可以看录的介绍
https://www.bilibili.com/video/BV1xN411X7zh/
对应地址
- 规则编辑器 http://repo.memkits.org/life-patterns/
- 渲染器 http://repo.memkits.org/random-lives/?size=80 (size 控制格子大小, 性能不好, 大了容易慢)
- 捉 bug https://github.com/Memkits/life-patterns
大体的介绍的话, 就是通过九宫格的 2^9 种状态, 来迭代中心的格子下一时刻的状态(0 或 1), 因为九宫格的可能性有 2^9 种, 这样再排列组合的话, 可能性就非常多了. 为了生成图案方便, 规则应该是对称的, 那么总体数量可以去掉一些重复… 按照生命游戏的设定, 直接按照个数来决定了.. 然而不对称也能运行, 只是特别容易乱. 我这边只是探索了一下简单的一些情况, 生成了上边的图.
3×3 的格子, 对应的就是 3×1 的二维的版本了. 而一维的版本, 听说已经研究比较透了, 也比较有意思 https://en.wikipedia.org/wiki/Elementary_cellular_automaton 现在这个版本, 也有受到上边这个自动机的启发. 不过我也不是搞数学的, 加上 3×3 排列出来的可能性非常多, 也就只能生成图案当做玩具了.
另外渲染器基于 PIXI 的 virtual DOM 方案实现的, 性能比较差. 理论上讲可以直接 WebGL 底层玩法的改成高性能的版本, 不过写起来就没这么省事了. 具体到我这边生成的规则是这样的… 比如:
_______1__11111_1_11_1111111111__111_11_111_1___1111111_111_1__1__11_11__11_1____111111_111_1___111_1___1_______111_1___1________111111_111_1___1111111_111_1___111_1___1_______111_1___1_1______11_1___1_______111_1___1__1____1_______________1_________________11_11_111_1____111111_111_1____11_1___1_______111_1___1________11_1___1_______111_1___1_______1_______________1________________11_1___1_______111_1___1_______1_______________1_____1_________1_______________1_______________________________________1_______
它的长度是 2^9 , 然后每一个位置的 _ 或者 1 对应 false 和 true. 然后对应九宫格的选中点, 从左往右, 从上到下的话, 以此取 2^(8-n) 之和, 从 0 开始计数.

这个和就是 2^9 的字符串上的坐标值, 然后就可以查询到 Bool 值. 按说是可以沿用我的规则编辑器, 然后另外用 WebGL 写个高性能版本的.
看下有没人有兴趣再弄点有意思的图案出来..