CS 493, Dr. Lawlor
The idea for the projects is for you to write a complete end-to-end
simulator of something you're interested in: similar to the
homeworks, but in more depth, and on a topic of
- Be ready to talk about what you want to build in-class on
Thursday, April 18. This session is designed as an
opportunity for N-way advice, discussion, and collaboration.
Give me some rough draft code (working, but not complete) on
Thursday, April 25.
Present your progress in-class on Thursday, May 2. Be
ready to talk for about 10 minutes.
- Describe exactly what physics you're planning to
simulate: what phenomena make it interesting, what it might be
useful for, and generally how it works.
- Describe exactly how you want to simulate it: what equations
you'll use, how you'll discretize them, how you'll
ensure stability, how fast you expect it to
- Describe your user interface for it. A good UI
is really important!
Turn in a final draft after the final exam on Tuesday, May
7. This version should (1) work completely, (2) look good,
and (3) have some attempt at a dimensional analysis--in the
code, you should explain what equations and units
your simulation uses.
Possible Topics (or pick your own!)
Choose any one of these topics, or pick your own topic. Remember you
have about a month to finish everything, so keep it simple! If these
seem too big, feel free to simplify them in your "topic" discussion.
Note that the above links are chosen purely on the basis of visual
coolness; better links explaining the above techniques undoubtably
- Extend any of your homeworks, from this class or another
- Extend your project 1 topic (if you liked it!).
- Pick a technical paper you're interested in, and implement
- Do something interesting with 2D fluid dynamics: simulate
the combustion of gasses or solids, let solar heat and humidity
form clouds, switch the rectangular 2D grid to hexogonal by
adjusting the coordinate lookup, etc!
textures (of any type), on the graphics card or off.
- Many independent agents, like people
fleeing a fire or a
freeway traffic jam.
- Simulate plant growth, such as via a pheremone signaling
equation, or something discrete like L
- Simulate waves, such as using the wave equation, or something
different like wave
particles or FFT
bodies rotating and colliding in space. There are
lots of good libraries for this, including Newton and ODE.
- Non-rigid bodies, such as cloth,
clay, or rubber.
- Hair simulation, like mass-spring
- Simple cellular automata (e.g., Conway's
Game of Life). These are especially fun to write on
the graphics card using a pixel shader!
- Or pick some other simulation you're interested in, and can
find useful data on!