En 1982, William T. Reeves, un investigador de Lucasfilm Ltd., estaba trabajando en la película Viaje a las estrellas II: la ira de Khan. Gran parte de la película gira en torno al dispositivo Génesis, un torpedo que cuando es disparado a un planeta árido y sin vida, tiene la capacidad de reorganizar la materia y crear un mundo habitable para la colonización. Durante la secuencia, una pared de fuego hace ondas sobre el planeta mientras se está “terraformando":
El término sistema de partículas, una técnica increíblemente común y útil en computación gráfica, fue acuñado en la creación de este efecto en particular.
“Un sistema de partículas es una colección de muchas muchas partículas diminutas que juntas representan un objeto difuso. Durante un periodo de tiempo, las partículas son generadas en un sistema, se mueven y cambian desde dentro del sistema y mueren desde el sistema”. (William Reeves, "Particle Systems—A Technique for Modeling a Class of Fuzzy Objects," ACM Transactions on Graphics 2:2 (April 1983), 92.
Desde principios de los ochenta, los sistemas de partículas han sido utilizados en innumerables juegos de video, animaciones, obras de arte digital e instalaciones para modelar varios tipos irregulares de fenómenos naturales, tales como fuego, humo, cascadas, niebla, hierba, burbujas y demás.
Esta sección estará dedicada a mirar las estrategias de implementación para la programación de un sistema de partículas. ¿Cómo organizamos nuestro código? ¿Dónde almacenamos la información relacionada con las partículas individuales frente a la información relacionada con el sistema como un todo? Los ejemplos que vamos a ver se centrarán en gestionar los datos asociados a un sistema de partículas. Utilizarán formas sencillas para las partículas y aplicarán solo los comportamientos más básicos (por ejemplo, la gravedad). Sin embargo, al usar este marco de trabajo y construir formas más interesantes para desplegar las partículas y calcular comportamientos, puedes obtener una variedad de efectos.
Como la cita descrita anteriormente, un sistema de partículas es una colección de objetos sencillos. Ya tratamos antes con la programación de colecciones de objetos, como arreglos de Movers que simulan pelotas rebotando. Pero para sistemas de partículas, nuestras colecciones son más complejas. Las colecciones variarán en tamaño: a veces habrá cero partículas, a veces diez, a veces diez mil.  Las propias colecciones tendrán comportamiento y propiedades, no solo las partículas de las cuales están conformadas. Nuestro objetivo es ser capaces de escribir un programa que se vea así:
var ps = new ParticleSystem();

draw = function() {
    background(255, 255, 255);
    ps.run();
};
Ni una sola partícula está referenciada en ese código, pero el resultado estará lleno de partículas volando por toda la pantalla. Crearemos programas con múltiples tipos de objetos, y objetos que seguirán la pista de otras colecciones de objetos, que nos ayudará a crear sistemas de partículas poderosos, pero también nos prepararán para escribir programas más poderosos en general.
Para averiguar cómo programar sistemas de partículas, usaremos dos técnicas avanzadas de programación orientada a objetos: herencia y polimorfismo. Con los ejemplos que hemos visto hasta ahora, siempre hemos tenido un arreglo de un solo tipo de objeto, como "movers"" u “osciladores”. Con la herencia (y el polimorfismo), aprenderemos una manera conveniente para almacenar un solo arreglo que contenga objetos de diferentes tipos. De esta manera, un sistema de partículas no necesita ser un sistema de un solo tipo de partícula.
En esta sección veremos los usos más típicos de los sistemas de partículas, pero el hecho de que las partículas en este capítulo se vean o comporten de cierta manera no debe limitar tu imaginación. Solo porque estos sistemas de partículas tiendan a parecer brillantes, volar hacia adelante, y caer con la gravedad no significa que esas sean las características que los tuyos deben tener. En realidad, el objetivo aquí es solo cómo hacer un seguimiento de un sistema de muchos elementos. Qué hacen y cómo se ven esos elementos depende de ti.