Proyecto P.O.O.
Simulación de órbitas de Cuerpos Celestes (Phyton).
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.