Fireworks is a moderately complex fireworks simulation that will utilize a particle engine to emulate the physics of real world particles. The goal is to create a visual scene of fireworks particles that will explode, disperse, and fall in random fashion.
The idea of the particle engine is to have fixed amount of particles in a collection, each with its own attributes that specify its position and velocity. Each particle in a firework will start off with the same initial position and will disperse in random fashion according to its velocity vector. Also, each particle has a random amount of time that it will last until it gradually fades away. All particles are subject to the same force due to gravity and wind.
In addition to the particle engine, the scene is lit up by the fireworks themselves. All particles are specified as a shiny, silver material. When a firework explodes, one of the eight OpenGL lights will be enabled with random color properties. The intensity of the light correllates with the amount of particles that still haven't faded away yet.
Use the left mouse button to create a firework. Fireworks originate at the point you click on the x-y plane. If the camera is rotated, so is the x-y plane that the fireworks appear on. Click and drag the right mouse button to move the camera around.
You can download the Windows executable version of Fireworks here. This version has been tested on WindowsXP and requires OpenGL and GLUT libraries.