PartSim: simulador 2D muy sencillo de interacciones entre partículas.

(c) 2004 Miguel Colom, under the GNU GPL license.
Email: miguelco at arrakis dot es.


PartSim es un simulador de partículas muy sencillo escrito en C++ que utiliza la librería gráfica SDL para mostrar los gráficos y configurable mediante ficheros XML.

El Universo dentro del cual se simulan las interacciones es el área bidimensional y rectangular que define la ventana del programa, dentro de la cual se colocan las partículas y se las dejan interactuar en base a unas leyes deterministas que tienen en cuenta ciertas características de las partículas, que básicamente son:
Además de las características propias de las partículas, las leyes que determinan su comportamiento están parametrizadas por:
En el fondo, es muy simular a la ley de Coulomb, que afirma que la fuerza de atracción o repulsión entre dos cargas puntuales (cuerpos cargados cuyas dimensiones son despreciables comparadas con la distancia r que las separa) es inversamente proporcional al cuadrado de la distancia entre ellas.
Sólo que se pueden cambiar algunos de los parámetros, como por ejemplo el exponente "2" de la distancia, entre otros.

El programa acepta como parámetro en línea de comandos el nombre de un fichero XML del que lee la configuración, que tiene estos campos:

Modo de uso

partsim [ficherovXML]
--help para ver la ayuda.
--license para información sobre la licencia GPL.
Si no se especifica ningún parámetro en línea de comandos, se utilizará el fichero de configuración por defecto default.xml.


Capturas

La verdad es que las capturas de este programa no son nada espectaculares, pero bueno... ahí van dos:



Descarga

Puedes el código fuente aquí: partsim.tar.gz
Antes de usar este programa, deberías haber leído la licencia GPL y estar de acuerdo con las condiciones.

El programa se puede mejorar en muchos aspectos aún, como por ejemplo añadiendo detección de colisiones o haciendo más realistas las fórmulas que determinan el movimiento.
Por suerto, la licencia GPL permite que cualquiera pueda tomar como base mi programa y mejorarlo de cualquier forma, siempre y cuando el programa siga siendo libre.
Si haces algún cambio, me gustaría que me avisaras: