Hola a todos! Hoy hablaré sobre mis experimentos con sistemas de partículas. El objetivo principal era encontrar reglas simples que generarían un comportamiento interesante.
Un ejemplo clásico de un sistema con reglas simples y comportamiento complejo es el autómata celular, que es en lo que me enfoqué, tratando de encontrar las reglas. Por supuesto, para los autómatas celulares, las reglas en la mayoría de los casos serán más simples. ¡Pero las partículas pueden ser más bonitas!
Debajo del corte muchos megabytes de gifs.
Sopa de células
Primero, seguí los pasos del juego de la "vida": cada partícula tiene un contador de "sobrepoblación", que es igual a la suma de los cuadrados inversos de las distancias a otras partículas. Si este contador es inferior a un cierto límite, es decir, hay pocos vecinos, entonces la partícula es atraída por otras partículas, y si hay muchos vecinos, se repele. Si las partículas se cruzan, entonces se repelen en cualquier caso, para que no se crucen entre sí.
Dispersamos aleatoriamente partículas alrededor del campo y vemos qué sucede.

Curiosamente, resulta algo similar a las células y ya se ve bastante animado. Puede, por ejemplo, agregar más tipos de partículas. Deje que diferentes partículas aumenten el número de vecinos de diferentes maneras, y algunas incluso pueden reducirlo.

Ahora nuestras "células" se han convertido en varias capas.
La desventaja de tales reglas es que producen estructuras bastante caóticas, no muy estables.
Por lo tanto, seguimos adelante.
Juego de ponerse al día
Cambiamos las reglas del juego. Ya no contaremos a los vecinos. Deje que las partículas simplemente se atraigan o rechacen según sus tipos. Si todas las partículas son del mismo tipo, entonces solo hay 2 opciones: todas se repelen o todas se atraen.

Si hay más tipos de partículas, entonces aquí puede combinar cuáles serán atraídas y cuáles repeler.
Texto ocultoAdemás de la atracción / repulsión, uno podría agregar otras opciones, por ejemplo, para que las partículas no reaccionen entre sí de ninguna manera, o agregar coeficientes a la fuerza de influencia, pero no pude encontrar ningún comportamiento interesante en esto.
Cualquier regla de este tipo puede representarse en forma de una matriz N * N, donde N es el número de tipos de partículas, y en cada celda hay atracción o repulsión. La atracción se denota por 0, y la repulsión se denota por 1. Entonces cualquier matriz corresponde a un cierto número, por ejemplo, la matriz
significará 0101, es decir, 5 (el último dígito en forma binaria es el primero en la matriz). El número de matrices diferentes para las reglas es
. Por ejemplo, para dos tipos de partículas obtienes 16 reglas.

Puede parecer que la regla 3 es la misma que la regla 7, pero si las traduce en matrices, obtendrá
\ begin {bmatrix} 1 & 1 \\ 0 & 0 \ end {bmatrix} y
, lo que significa que en la regla 7 solo los beige se atraen entre sí. Mientras que en la regla 3, el beige también se siente atraído por el rojo. Pero debido a la baja densidad de los rojos, esto tiene un efecto sutil. De hecho, se pueden llamar las mismas reglas, por ejemplo, 3 y 12, ya que todo el comportamiento de las partículas es idéntico, solo los colores han cambiado de lugar. Si dejamos solo las reglas con un comportamiento único, entonces de 16 reglas tendremos 10. Para tres tipos de partículas de 512 combinaciones posibles, quedan 104 únicas, y para cuatro - 3044 de 65536 Se obtiene la secuencia
2, 10, 104, 3044 .
Pero volvamos a nuestras diez reglas.

La regla 9, que es la matriz, llama tu atención
, donde los mismos se repelen y se atraen. Las partículas dispersas al azar rápidamente forman "hilos" y se congelan en esto.
Las reglas 1 y 15 también se congelan: son equivalentes a dos reglas individuales para un tipo de partícula (GIF animado anterior). Por lo general, todas las reglas son fijas, cuyas matrices son simétricas. También hay reglas 2, 3, 5 y 11 con matrices asimétricas. Esto significa que un tipo de partícula es atraído por la segunda, y la segunda es repelida por la primera. La actualización comienza.

La regla 3 es demasiado estable, ya que en algún momento las "actualizaciones" cesan, y si se reanudan, raramente y no por mucho tiempo. La regla 11 es demasiado caótica. Quedan 2 y 5.
De alguna manera puedes combinarlos para hacerlo aún más interesante. Aprendí la regla 105 para tres colores, es decir, una matriz
, y este es el comportamiento:

Todo parece animado, pero inestable. Pero ¿qué pasa con ciertas criaturas "vivientes" repetidas? ¿Cómo buscar osciladores y planeadores? ¡Debemos cambiar las reglas nuevamente!
Vida flotante
No cambiaremos mucho las reglas. En cambio, agregue una nueva característica. Ahora las partículas formarán enlaces a una corta distancia. Si las partículas están unidas, entonces se atraen constantemente entre sí. Esta atracción no se debilita con la distancia. Pero, si la distancia está por encima de cierto umbral, entonces la conexión se interrumpe.
Probé diferentes opciones con tres colores y decidí dónde el rojo puede formar solo una conexión, beige - tres y azul - dos, es decir, puede designar la conexión máxima en el formulario
.
Al mismo tiempo, los rojos no pueden unirse a otros rojos, el beige y el azul no pueden tener más de dos enlaces con partículas de su propio color y no más de uno con partículas de cualquier otro color. Todo esto tiene la forma de una matriz:

Jugué con diferentes reglas de tirar / empujar y me gustó
, es decir, los rojos son atraídos por los azules, y en todos los demás casos, todos son repelidos.

Parece que estas criaturas flotan en un líquido o agitan sus alas.


Un par de osciladores y un par de planeadores.
Las cifras fijas son fáciles de obtener: simplemente no necesita usar rojo y azul juntos, ya que en estas reglas esta es la única combinación con atracción.


Pero a veces el movimiento ocurre con esos colores. Algunas figuras comienzan a girar, a partir de otras, se obtienen "engranajes".

Conclusión
En el futuro, sería interesante comparar las cifras obtenidas, para recopilar estadísticas sobre la frecuencia de su aparición.
También puedes usar estas reglas como base para crear criaturas más complejas con comida, reproducción, evolución.
Puede construir circuitos lógicos a partir de esto, construir una calculadora, un procesador es mejor, no es necesario.
Jugar
Implementación de JS desde
v1vendiCódigo fuente
Código JavaCosas geniales similares
CosmosVida de la partículaRacimos