粒子上的生命

大家好! 今天,我将讨论粒子系统的实验。 主要目标是找到可以产生有趣行为的简单规则。

具有简单规则和复杂行为的系统的经典示例是元胞自动机,这是我试图寻找规则的重点。 当然,对于细胞自动机,规则在大多数情况下会更简单。 但是粒子可以更漂亮!

在削减了很多兆的GIF。


细胞汤


首先,我遵循“生命”游戏的脚步:每个粒子都有一个“人口过剩”计数器,该计数器等于到其他粒子的距离的反平方之和。 如果此计数器小于某个限制,即邻居很少,则粒子将被其他粒子吸引,如果邻居很多,则将其排斥。 如果颗粒相交,则它们在任何情况下都会被排斥,以免彼此穿过。

我们将粒子随机散布在场上,看看会发生什么。



有趣的是,事实证明它与细胞类似,并且看起来已经很生动。 例如,您可以添加更多类型的粒子。 让不同的粒子以不同的方式增加邻居的数量,有些甚至可以减少它。



现在,我们的“单元”已变成多层。

这种规则的缺点是它们会产生相当混乱且不稳定的结构。

因此,我们继续前进。

追赶游戏


我们更改游戏规则。 我们将不再计算邻居。 根据它们的类型,让颗粒简单地吸引或排斥。 如果所有粒子属于同一类型,则只有两种选择:它们全部排斥或全部吸引。



如果存在更多类型的粒子,则可以在此处组合哪些粒子将被吸引以及哪些粒子将被排斥。

隐藏文字
除了吸引/排斥之外,还可以添加其他选择,例如,以使粒子不会以任何方式相互反应,或者增加影响力的系数,但是我在其中找不到任何有趣的行为。

任何这样的规则都可以用矩阵N * N的形式表示,其中N是粒子类型的数量,并且在每个单元中都存在吸引或排斥。 吸引力用0表示,排斥力用1表示。然后任何矩阵都对应于某个数字,例如,矩阵 \开bmatrix1010\结bmatrix表示0101,即5(二进制形式的最后一位是矩阵中的第一位)。 规则的不同矩阵数为 2N2。 例如,对于两种类型的粒子,您将获得16条规则。



规则3似乎与规则7相同,但是如果将它们转换为矩阵,则会得到 \开bmatrix1100\结bmatrix\开bmatrix1110\结bmatrix,这意味着在规则7中,只有米色相互吸引。 在规则3中,米色也吸引了红色。 但是由于红色的密度低,因此具有微妙的效果。 实际上,可以将相同的规则称为3和12,因为粒子的所有行为都是相同的,所以只有颜色改变了位置。 如果仅保留具有唯一行为的规则,则在16条规则中,我们将有10条。对于512种可能组合中的三种类型的粒子,将保留104种唯一组合,而对于65536中的4种-3044,将获得序列2、10、104、3044

回到我们的十个规则。



规则9(矩阵)引起您的注意 \开bmatrix1001\结bmatrix,彼此排斥并互相吸引。 随机散布的粒子迅速形成“线”并冻结在其上。

规则1和15也冻结:它们等效于一种粒子(以前的动画GIF)的两个单一规则。 通常,所有规则都是固定的,其矩阵是对称的。 还有不规则矩阵的规则2、3、5和11。 这意味着一种类型的粒子被第二种粒子吸引,第二种粒子被第一种粒子排斥。 追赶开始。



规则3太稳定了,因为它在某个时候停止了“追赶”,如果它们恢复了,那么就很少而且不会持续很长时间。 规则11太混乱了。 保留2和5。

您可以通过某种方式将它们组合在一起,使其变得更加有趣。 我为三种颜色选择了规则105,即矩阵 \开bmatrix100101100\结bmatrix,这是行为:



一切看起来都很生动,但不稳定。 但是某些反复出现的“活着”的生物呢? 如何搜索振荡器和滑翔机? 我们必须再次更改规则!

浮生


我们不会对规则进行太多更改。 而是添加一个新功能。 现在,粒子将在短距离处形成键。 如果粒子被束缚,则它们会不断相互吸引。 这种吸引力不会随着距离的增加而减弱。 但是,如果距离大于某个阈值,则连接断开。

我尝试了三种颜色的不同选项,并确定了红色只能形成一个连接的位置,米色-三个,蓝色-两个,也就是说,您可以在形式中指定最大连接 \开bmatrix132\结bmatrix

同时,红色不能与其他红色结合,米色和蓝色与其自身颜色的粒子之间的键合不得超过两个,与其他颜色的粒子之间的键合不得超过一个。 这都是矩阵形式: \开bmatrix011121112\结bmatrix



我玩了不同的拉/推规则,我很喜欢 \开bmatrix110111111\结bmatrix,也就是说,红色被吸引到蓝色,而在所有其他情况下都被排斥。



这些生物似乎漂浮在液体中或拍打着翅膀。





一对振荡器和一对滑翔机。

固定数字很容易获得:您不需要同时使用红色和蓝色,因为在这些规则中,这是唯一具有吸引力的组合。





但是有时运动会以这种颜色发生。 一些数字开始旋转,从其他数字开始,获得“齿轮”。



结论


将来,比较获得的数字以收集有关其出现频率的统计数据将很有趣。

您还可以将这些规则用作创建具有食物,繁殖,进化的更复杂生物的基础。

您可以由此构建逻辑电路,构建计算器,最好不要使用处理器


v1vendi的 JS实现

源代码


Java代码

类似的好东西


大波斯菊
粒子寿命
集群

Source: https://habr.com/ru/post/zh-CN442128/


All Articles