Motor triangular

Cada punto aplica su regla local, la cohesión combina lo que hacen todos, aparece un resultado R, y ese resultado reescribe la regla de cada punto. Vuelta a empezar.

Pulsa un punto o una fila de la tabla para seguirlo. Espacio pausa y reanuda. En pausa, “Avanzar una fase” recorre el triángulo vértice a vértice.

Qué hace el motor

Cada punto es un agente que solo ve lo que tiene cerca. Con esa información incompleta aplica su propia regla: no chocar con los vecinos, ir en su misma dirección y no alejarse de ellos. Ninguno sabe dónde está el grupo ni qué forma tiene.

La cohesión junta lo que hacen todos, y de ahí sale un resultado: la cruz amarilla R, que dice dónde está el conjunto, cuánto se dispersa y si va en una misma dirección. Nadie lo decide; aparece solo. Los puntos que van a contracorriente o se alejan demasiado contradicen la trama y se vuelven rojos.

Ese resultado vuelve a cada punto y le reescribe la regla, a cada uno a su manera: el que se aleja tira más hacia el grupo, el que va apretado busca aire, el que gira mucho se calma. Es el contrarresto. Y vuelta a empezar. Lo interesante es mirar qué hace el conjunto con el tiempo: si se congela, si se desboca o si encuentra el borde, donde cambia sin deshacerse.

La receta completa

El ciclo

Regla local → cohesión → resultado R → retroalimentación, y vuelta a empezar. En pausa, “Avanzar una fase” ejecuta cada paso por separado.

La fuerza sobre cada punto

Fi = α · mAi · Ci + σ · mSi · Si + λ · Ai + Ni

α, σ y λ son los deslizadores de atracción, separación y alineación, iguales para todos. mAi y mSi son los pesos propios de cada punto, los que reescribe la retroalimentación y aparecen en la tabla. C es la cohesión, S la separación, A la alineación y N la corrección por no contradicción. Los vecinos de un punto son los que están a menos del radio local r.

La cohesión, según la operación

Bandada
Ci = 0,003 · (centro de los vecinos − pi)
Ai = 0,05 · (velocidad media de los vecinos − vi)
Probabilística
Las mismas fórmulas que la bandada, pero cada vecino cuenta solo con cierta probabilidad: 0,9 si comparte el valor V/F del punto y 0,3 si no. El giro al azar se multiplica por 1,6.
Suma
Ci = 0,0004 · (centro de R − pi)
Ai = 0,04 · (velocidad media de R − vi)
Aquí cada punto conoce el centro de todos, tomado del resultado del ciclo anterior.
Gravedad
Ci = G · Σj≠i (pj − pi) / (dij2 + 400)3/2    con G = 540 / n
Ai = 0,015 · (velocidad media de los vecinos − vi)
Todos atraen a todos. El 400 evita que la fuerza se dispare cuando dos puntos casi se tocan, y dividir entre n hace que no crezca al añadir puntos.

La separación

Si = 0,35 · Σdij < rs − (pj − pi) / dij · (rs − dij) / rs    con rs = máx(12; 0,45 · r)

Igual en todas las operaciones. Solo actúa de cerca, y cuanto más cerca está el vecino, más fuerte empuja.

V o F

Un punto está en V si cumple las dos cosas a la vez:

vi · (velocidad media de R) > 0    y    distancia al centro de R < 2,2 · máx(D; 20)

Es decir, va en la misma dirección general que el conjunto y no se ha alejado más de 2,2 veces la dispersión D. Si falla alguna, está en F. Cuando el orden baja de 0,15 no hay dirección común, y solo se mira la distancia. Con “No contradicción” activado, a los puntos en F se les suma:

Ni = 0,05 · (dirección hacia el centro de R) + 0,05 · (dirección media de R)

El movimiento

La velocidad nueva es la vieja más Fi, girada un ángulo al azar proporcional a “Giro al azar” y al peso propio mGi, con un límite de 3,5 unidades por ciclo. A menos de 60 unidades de los bordes, una fuerza suave empuja hacia dentro. El plano mide 1000 × 700.

El contrarresto

Tras cada resultado, con k = 0,04 · retroalimentación:

mAi += k · (distancia al centro / D − 1)
mSi += k · (vecinos muy cercanos − 2) / 2
mGi −= k / 2 · (|giro del último ciclo| / 0,08 − 1)

Después, cada peso vuelve un 0,5 % hacia 1 y se mantiene entre 0,2 y 3.

La lectura del resultado

Dispersión D: distancia típica de los puntos al centro, calculada como la raíz de la media de las distancias al cuadrado. Orden: longitud de la suma de las direcciones de todos los puntos, dividida entre n; vale 1 si todos van hacia el mismo lado y 0 si cada uno va a lo suyo. Coherencia: proporción de puntos en V.

ΔR = |ΔD| / 100 + |Δorden| + |Δcoherencia| + |Δdirección| / π · orden

Si la media de ΔR en los últimos 120 ciclos es menor que 0,0015, la lectura es punto fijo. Si el orden baja de 0,25 y la coherencia del 60 %, es caos. Si no, borde.

Los números concretos (0,003, 0,05, 2,2, 400…) no salen de la teoría. Son constantes de ajuste elegidas para que la animación se vea bien. La estructura del ciclo sí responde al motor triangular; los coeficientes son arbitrarios, y cambiarlos cambia el comportamiento.