Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

A C# Tiny Fireworks Simulator

0.00/5 (No votes)
17 Feb 2009 3  
A tiny fireworks simulator based on a simple physical engine. The user can configure 10 launchers with the initial speed of the bomb, the explosion form and the explosion colour.
FireWorksSimulator_Sources

Introduction

The purpose of the article is more to present the application than to explain the technical facets of the code which is in fact quite simple. The aim of the application is to display firework particles on a dedicated user control. In fact, the user control manages a list of fireworks bombs all along their life cycle; the user can launch at any time a new bomb via the bomb launcher controls on the bottom of the window.

Description

Each fireworks bomb contains a list of fireworks particles, the first time the list consists of only one particle launched on vertical axis; when this particle comes on its apogee, it is deleted and new particles populate the list; those particles symbolise the explosion particles.

At each timer tick, the simulator control refreshes the position of each particle of each bomb. The refresh position is computed by a basic physical engine; in fact each particle has a mass and forces applied on it. The physical engine uses the fundamental principle of dynamics: sum of external forces equals the mass multiplied by the acceleration.

The form of the explosion is given by the expression of the initial speed of the explosion particles. The application implements 10 different explosion forms; from basic (circle) to more strange ... Furthermore to try to improve the similarity, a fader effect plays on the particles.

History

  • 17th February, 2009: Initial post

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here