Estoy creando un juego basado en un simulador de partículas de gas. Todos los nodos (círculos verdes) representan partículas gaseosas y chocan elásticamente.
Mi algoritmo explica correctamente las colisiones de dos partículas, ya que la velocidad final se calcula aplicando directamente una ecuación. Sin embargo, falla si tres o más partículas se superponen (colisionan) en el mismo tiempo de reloj (marco).
Mi pregunta es ¿cómo puedo calcular las velocidades finales de una colisión con más de dos partículas colisionando? Tenga en cuenta que si A choca con B y B choca con C, no es necesario que A choque con C (B puede estar en el centro).
¿Hay un algoritmo diseñado específicamente para esto?
Simulador: https://gravitifydemo1.github.io/
El impulso es incorrecto (al momento de escribir). Sin embargo, el gráfico KE está cambiando su valor. Si el algoritmo para colisiones de dos partículas funcionara correctamente, la KE no cambiaría. El gráfico es constante la mayor parte del tiempo, pero sube y baja.
Una solución parcial sería usar pasos de tiempo adaptables, es decir, cuando detecta múltiples colisiones con la misma partícula a la vez. , su paso de tiempo se reduce para que solo ocurra una colisión con esa partícula, es decir, calcula las posiciones en , con .
No resuelve todos los problemas, pero reducirá la probabilidad de que ocurra una colisión múltiple en un solo paso de tiempo.
Editar: con respecto a las colisiones múltiples, puede tratarlas como una secuencia de colisiones por pares de la siguiente manera.
Dejar Sea el número de partículas que chocan entre sí en un lugar. Dejar ser el conjunto de todos posibles colisiones por parejas. Para cada seleccionado al azar, procese la colisión entre el par y haga lo mismo para todos los pares.
Problemas con este enfoque:
Si chocan muchas partículas, puede terminar procesando colisiones que efectivamente no deberían ocurrir;
Una mejor manera de hacer este tipo de enfoque sería comenzar con las colisiones externas y "zambullirse" en las internas. Sin embargo, esto también aumentará la complejidad del código, ya que tendrá que calcular la distancia al centro (de masa) del conjunto de partículas y tener una matriz con las distancias ordenadas.
Amigo Shukant
Ertxiem - reincorporar a Mónica
Ertxiem - reincorporar a Mónica