POTHIEDU Não Decore a Resposta. Entenda o Caminho

Dois Corpos Nao Ocupam O Mesmo Lugar

Dois Corpos Nao Ocupam O Mesmo Lugar

O princípio da impenetribilidade na prática

A regra diz que dois objetos sólidos não podem estar no mesmo lugar ao mesmo tempo. Simples assim. Mas quando você realmente trabalha com isso no dia a dia, percebe que o assunto é muito mais chato do que parece. Eu comecei lidando com isso em simulações de colisões há anos. A primeira coisa que aprendi é que a teoria é perfeita e a prática é um pesadelo de arredondamentos. Existe um bug clássico em motores de física onde dois corpos podem, sim, ocupar o mesmo espaço se a velocidade for alta demais. O engine simplesmente não consegue detectar a colisão entre frames. Isso se chama tunneling, e acontece frequentemente quando você deixa o timestep muito grande por performance.

dois corpos nao ocupam o mesmo lugar: o que realmente importa

O princípio é conhecido tecnicamente como impenetrabilidade da matéria. Em aristóteles já era discutido, mas ganhou forma definitiva com newton. Cada partícula ocupa uma posição tridimensional única em um dado instante. Isso parece óbvio até você tentar implementar. Aqui vai algo que poucos explicam: o problema não é o princípio em si, mas como ele é aplicado computacionalmente. A maioria das bibliotecas usa broadphase e narrowphase separados. Se você não configure os thresholds corretamente, vai ter falsos positivos ou, pior, falsos negativos que deixam objetos se sobrepondo. Já perdi horas caçando esse tipo de bug em cenários com muitos corpos interagindo. Uma solução que eu uso rotineiramente é o CCD (continuous collision detection). Em vez de verificar posições discretas, você calcula trajetórias lineares entre frames e checa interseções ao longo do movimento. O custo é maior, mas evita que objetos velozes fiquem presos uns nos outros. Para simulações estáticas ou lentas, nem sempre é necessário, mas para anything com velocidade acima de certos limites, é obrigatório.

O limite prático que todo mundo esquece: a precisão dos floats. Quando trabalhamos com coordenadas muito grandes em mundos abertos, o erro numérico faz com que objetos que deveriam colidir simplesmente passem uns pelos outros. Já vi jogos onde carros atravessavam paredes porque a precisão do double foi substituída por float para economizar memória. A escolha do tipo de dado afeta diretamente se o princípio vai funcionar ou não. Se você está começando agora, não tente implementar seu próprio engine de física. Use box2d, bullet ou physx e entenda como eles tratam essa limitação internamente. O tempo que você economiza não compensa os bugs que vai encontrar no caminho.

DOIS CORPOS NÃO OCUPAM O MESMO LUGAR! - YouTube
DOIS CORPOS NÃO OCUPAM O MESMO LUGAR! - YouTube