Loading
0202 / 09交互矩阵是粒子生命中最强大的部分,也是最容易被误读的部分。
它在五个彩色字母下方放置了二十五个垂直滑块。第一眼看上去,它像一台均衡器:向上移动就是“更多”,向下移动就是“更少”。这种理解足以鼓励尝试,却不足以进行有意图的设计。
矩阵不是二十五个彼此独立的强度控制。它是一张描述方向性关系的表。
每个单元格都补全同一句话:
这一行的粒子类型,受到来自这一列粒子类型的作用力。
当这句话变成直觉,矩阵就不再只是界面,而会成为一种语言。
每个开关只修改发布矩阵循环中的一个 +0.90 单元:行粒子受到列粒子的吸引。反向 −0.40 逃离关系保持不变,符合单变量干预。
引擎把矩阵存储为 matrix[myType][theirType]。“我的类型”选择行,因为将被改变的是我的速度;“对方的类型”选择列,因为邻居产生了这次作用力。
如果 A 行、B 列的值是 +0.9,A 粒子会在矩阵区域中向 B 粒子加速。如果 B 行、A 列是 -0.4,B 粒子会远离 A。
这是两个不同的单元格,也是两个不同的事实。
选择一个单元格
A 受到 吸引 来自 B.
+0.9
行代表受力者,列代表施力者。方向性让追逐成为可能:A 可以追 B,而 B 同时逃离 A。
符号定义关系:
| 数值 | 矩阵区域中的含义 | 常见效果 |
|---|---|---|
+1.0 | 强吸引 | 快速聚集或追逐 |
+0.1 | 轻微吸引 | 松散凝聚 |
0.0 | 中性 | 只保留通用的近距离排斥 |
-0.4 | 中等排斥 | 回避或分离 |
-1.0 | 强排斥 | 剧烈排除 |
这个值不会覆盖第一篇中的内部排斥区。即使数值是 +1.0,粒子进入 βR 以内仍会互相推开。矩阵控制关系,力曲线保护间距。
如果 A ← B 和 B ← A 都是相同的正值,这个关系就是互惠的。两种粒子互相靠近,并倾向于在偏好距离附近形成混合结构。如果两个值都是负数,它们会彼此分离。
有趣的运动始于非对称:
A ← B = +0.9 A 强烈靠近 B
B ← A = -0.4 B 远离 A结果是追逐。A 无法形成静态连接,因为 B 以不同方式参与同一段关系。引擎里没有“追逐”行为;追逐只是我们给两种不等加速度产生的几何形态起的名字。
把关系扩展成循环——A 靠近 B,B 靠近 C,C 靠近 D,D 靠近 E,E 又靠近 A——每种粒子都在追逐一个正在追逐其他对象的目标。这个环没有终点。扩大到足够多的粒子,无法完成的追逐就变成旋转。
矩阵原则: 对称值擅长制造排列;非对称值擅长制造事件。
五个对角单元格描述同类粒子之间的作用。
正对角值让一种颜色产生自凝聚;负对角值让同类成员互相回避;零对角值只留下近距离通用排斥。
因此,当世界形成按颜色分离的岛屿时,对角线是第一个检查位置。但它不是完整答案。一个 A 岛只能在与其他四种类型的关系中存在。强交叉排斥可以让边界更清晰,弱桥接吸引可以让两座岛相接,追逐者则可以让整个区域持续运动。
阅读矩阵需要在三个尺度间移动:
Galaxy 预设把方向性写得非常清楚:
A B C D E ← 施力类型
A +0.1 +0.9 0.0 0.0 -0.4
B -0.4 +0.1 +0.9 0.0 0.0
C 0.0 -0.4 +0.1 +0.9 0.0
D 0.0 0.0 -0.4 +0.1 +0.9
E +0.9 0.0 0.0 -0.4 +0.1
↑
受力类型每种类型以 +0.1 轻微吸引同类,强烈吸引下一种类型,同时适度排斥正在追逐自己的类型。五步循环无法形成最终顺序,因为最后一段关系重新回到第一段。
可见的旋臂并不是矩阵单独保证的。它们还依赖初始种子、粒子密度、力曲线、摩擦和时间。但矩阵提供了一种持续存在的方向矛盾,使旋转成为可能。
每个单元格都显示正负号与数值;颜色只强化含义,从不单独承担含义。
Cells 的对角值从 +0.3 到 +0.5,鼓励每种颜色与同类聚集。大多数跨类型关系位于 -0.6 到 -0.8 之间,让不同颜色的区域保持分离。
如果只有这些关系,结果会是一组孤立岛屿。两组互惠的 +0.2 桥——A 与 B、C 与 D——允许特定岛屿相接。系统因此更像组织:区域保持不同,同时存在有限黏附。
这个预设也说明一个指标不能单独定义成功。Cells 通常移动缓慢、稳定性很高。在 Galaxy 中,这可能意味着追逐已经死亡;在 Cells 中,稳定下来的结构恰恰是目标。
Soup 使用更温和的数值和不完整的追逐链:A 追 B 而 B 逃离 A;B 追 C;C 追 D;E 与多数类型的耦合较弱;每种类型都保留一些自凝聚。
“食物链”只是描述,不是生物学事实。没有任何东西被吃掉,也没有能量交换。但非对称关系产生了跟随与逃离的空间模式,而足够多的弱关系让世界保持不规则。
Soup 很适合用来比较开放链条与 Galaxy 的闭合循环。它存在松散的端点,因此不会形成同样清晰的全局同步。
Chaos 在非对角位置使用 ±0.9,并满足:
matrix[i][j] = -matrix[j][i]每当一种类型靠近另一种,反向关系都会以同等强度逃离。没有温和的自凝聚吸收冲突,几乎每个局部排列都包含不相容的方向。
Chaos 不是失败预设。它的成功条件就是持续不稳定,因此调优验收不会要求它像结构化预设一样形成一定数量的团簇。
学习矩阵最快的方法,恰恰是最不壮观的方法:进行受控变化。
0.2 到 0.4,不要跨越整个范围。界面会用十个渲染帧插值到新矩阵。这不是物理定律,而是 UX 决策。瞬间跳变会让世界在没有可见原因的情况下突变;短暂过渡让重组过程保持可读,同时仍然足够即时。
只要修改一个单元格,预设名称就会变成 Custom。这是一个很小但重要的科学诚实:即使只改变百分之一,你观察的也不再是标准 Galaxy 或 Cells。
可以尝试三项实验:切断 Galaxy 的一条 +0.9 循环边;把 Cells 的某个强交叉排斥向零移动;反转 Soup 中的一段追逐。如果一个世界值得保留,把它存入“我的发现”或分享 URL。矩阵、粒子数量、预设名称和随机种子都会被保存。
矩阵定义每次相遇意味着什么,却不决定时间如何前进、邻居如何被找到,也不解释为什么同一种子能够重放同一个开场。这些属于第三篇中的引擎。