Proyecto P.O.O.

Simulación de órbitas de Cuerpos Celestes (Phyton).



SOURCE CODE

    Descripción del Problema:

    Cuando indagamos en las profundidades del cosmos nos hacemos la pregunta de por qué todos los sistemas de cuerpos celestes se mueven de la forma en que lo hacen, generalmente movimientos elípticos en grupos. Como muchas veces no es fácil imaginar la dinámica con la que ocurren estos procesos, sería de mucha utilidad poder simular en 3D como se comporta una distribución aleatoria de cuerpos celestes en el espacio pudiendo alterar parámetros como velocidades iniciales, fuerzas gravitatorias, radio de los cuerpos, etc.


Análisis del problema:


El escenario contará con cuerpos celeste que interactuarán entre si siguiendo la ley gravitacional universal, a partir de esta misma se determina las nuevas velocidades y posiciones de los cuerpos. Si un cuerpo celeste choca con otro estos se unirán formando uno nuevo con una mas coherente al modelo diseñado.


Casos de uso:

Nombre

Iniciar simulación

Actores

Usuario de la Aplicación

Pre-Condiciones

El entorno de simulación tiene que estar inicializado.

Evento

Ejecución de la simulación

Post-Condiciones

La simulación queda en ejecución.

Tipo

Manual


Curso normal de eventos:


Acción de los actores

Respuesta de Sistema

1. El usuario hace click en el botón play.

2. El sistema ejecuta la simulación



Nombre

Generación aleatoria de cuerpos

Actores

Usuario de la Aplicación

Pre-Condiciones

La simulación no está en estado Play, el módulo de simulación esta inicializado

Evento

Crea cuerpos en posiciones aleatorias

Post-Condiciones

Hay una distribución aleatoria de cuerpos en el mapa

Tipo

Manual


Curso normal de eventos:


Acción de los actores

Respuesta de Sistema

1. El usuario hace click en el botón play.

2. El sistema ejecuta la simulación



Nombre

Nuevo

Actores

Usuario de la Aplicación

Pre-Condiciones

El modulo de simulación esta cargado.

Evento

Se eliminan todos los cuerpos

Post-Condiciones

No hay cuerpos en el escenario

Tipo

Manual


Curso normal de eventos:


Acción de los actores

Respuesta de Sistema

1. El usuario hace click en el boton nuevo.

2. El sistema limpia el escenario.



Diagrama UML Casos de Uso:






Implementación en phyton:


Utilizamos un módulo de python para hacer interfaces en TK. Se creó un objeto cuerpo que tiene posición x, y, velocidad y masa. En cada iteración se calcula el f=G*m1*m2/r² de cada objeto con todos los demás así se encuentra la fuerza neta a la que esta sometido cada objeto. En cada paso de la simulación se actualiza la velocidad haciendo v= v+a*t y la posicion con x=x+v*t todo en 2 dimensiones. cuando se efectúa una colisión se hace un análisis en el que se agrupa a los objetos cada grupo contiene los objetos que se están tocando luego para cada grupo se calcula el momentum total del grupo, con la masa total y el centro de masa con esos datos se crea un nuevo objeto con esas características y se elimina al grupo de objetos que se estaban tocando a si que desaparecen los objetos que se tocan y se crea una bola equivalente.