entreMultiversos ← tecnologia
engenharia de software· 01.07.2026· 6 min

Três corpos: física real como identidade

Por que o coração deste site é uma simulação gravitacional de verdade — e não uma animação roteirizada.

Três corpos sob gravidade mútua não têm solução geral. É um resultado antigo, incômodo e bonito: qualquer perturbação mínima nas posições ou velocidades diverge, e o sistema desliza para o caos determinístico. Mas dentro desse caos existem ilhas raras — coreografias, soluções periódicas em que os três corpos dançam para sempre a mesma figura. A figura-oito de Chenciner e Montgomery (2000), onde os três se perseguem ao longo de uma lemniscata com período T ≈ 6.3259; os triângulos de Lagrange, girando desde 1772. Foi essa dualidade — caos genuíno e equilíbrios genuínos, sem nada no meio — que virou a espinha deste site.

A Entrada vive em caos: os três corpos se movem livres, com uma semente que muda por dia. Cada um dos sete mundos é uma coreografia diferente — sua figura, sua cor, sua escala. Viajar de um lugar a outro não é uma transição de CSS nem um keyframe desenhado à mão: é o sistema sendo guiado, com uma força de atração suave, das condições atuais até as condições iniciais daquela coreografia — e então solto. Se a física estiver certa, o equilíbrio se sustenta sozinho, sem truque. Sair de um mundo é o inverso: perturbar o sistema, e o caos retoma.

Por que isso importa mais do que parece

Era mais barato fingir. Um path de SVG animado por requestAnimationFrame teria o mesmo efeito visual e custaria uma fração do trabalho — sem singularidades para amortecer, sem energia para conservar, sem a integração a recalcular 60 vezes por segundo. Mas seria uma mentira pequena embutida na fundação: a promessa do site é que os mundos coexistem em tensão real, não em coreografia de apresentação. Física roteirizada seria decorar a metáfora por fora enquanto ela fica oca por dentro. O integrador abaixo — velocity Verlet, o mesmo método que a mecânica celeste usa para prever órbitas de verdade — é a diferença entre simular uma ideia e ilustrá-la:

// lente/lente-corpos.js — um passo de velocity Verlet
function passo(dt) {
  for (var i = 0; i < 3; i++) {
    var c = corpos[i];
    c.x += c.vx * dt + 0.5 * aAtual[i].x * dt * dt;
    c.y += c.vy * dt + 0.5 * aAtual[i].y * dt * dt;
  }
  var aNova = acel(); // recalcula a gravidade mútua na posição nova
  for (var k = 0; k < 3; k++) {
    corpos[k].vx += 0.5 * (aAtual[k].x + aNova[k].x) * dt;
    corpos[k].vy += 0.5 * (aAtual[k].y + aNova[k].y) * dt;
  }
  aAtual = aNova;
}

Nada aqui é decidido de fora: a posição de cada corpo no próximo quadro depende só da posição e velocidade que ele já tinha, e da gravidade que os outros dois exercem sobre ele naquele instante. É por isso que a abertura do site — o ∞ desenhado uma volta inteira, completo, antes de se romper na Entrada — não é uma peça de motion design pré-renderizada: é o mesmo motor, rodando ao vivo, que sustenta cada mundo depois dela.

← voltar ao circuito tecnologia · 2026—