Assignment 3:
Particle Systems
CS 551/651 Advanced Graphics: Computer Animation
Spring 2002, Professor Brogan
Due 9:00 a.m. April 2nd
UPDATES:
(3/26/02) Runge-Kutta integration is no longer created for the assignment. It doesn't contribute much to the simulation of the particles during free fall and it becomes a bit more complicated for the particles connected by springs.
Introduction
The following description is what is required to get a “B” on this assignment. Following this description are suggestions for extra things you can do to earn an “A.”
Write a spring/mass simulation of a particle. You can render each particle however you wish, but conceptually, these are small, symmetrical objects and you can ignore any angular effects. Your system should have at least 1000 particles. These particles can be generated from multiple sources and can take on many different physical characteristics.
There should be a minimum of ten surfaces off which the particles should bounce. These surfaces can be walls, the floor, polygonal objects, etc. The surfaces need not move, so need only concentrate on the dynamics of the particles.
You should also create a method for connecting sets of particles via springs (and dampers). Use these springs to create a spring-mass mesh of at least eight particles (a cube, for example) and triangulate the mesh with polygons off which the free-falling particles will bounce. Again, this spring-mass mesh will be extremely dense and it will not be affected at all by the momentum of the colliding particles.
Your animation should resemble some physical phenomenon. For example, particles can be used to model waterfalls, rocket exhaust, lava lamps, or snowballs smashing on a wall.
You must implement Runge-Kutta and Euler integration algorithms. Note that you’ll want to pick different time steps for the each. You’ll also have to implement impulse-based collision response and spring/damper dynamics.
Your FLTK interface should include the following:
____ If using Microsoft Studio, build your project so FLTK and OpenGL includes and libraries will be in the default locations. You shouldn’t have to update your project properties to compile and link.
____ First thing in the README must be instructions for how to run your
application (are there command line arguments?).
____ Zip your source code and README (not the executable or object
files).
____ The zipped directory name must include your name or userID (I’m
tired of unpacking “assignment 3” turnins and then moving them to another
directory to avoid overwriting).
____ Attach turnin file to email with your name or email in the file
name.
____ Submit turnin zip file to dbrogan@cs.virginia.edu.