Project 2
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
your choice.
- 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.
- 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
run, etc.
- Describe your user interface for it. A good UI
is really important!
- 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.
- 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.
- Extend any of your homeworks, from this class or another
class.
- Extend your project 1 topic (if you liked it!).
- Pick a technical paper you're interested in, and implement
something related.
- 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!
- Reaction-diffusion
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
systems.
- Simulate waves, such as using the wave equation, or something
different like wave
particles or FFT
ocean synthesis.
- Rigid
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
models.
- 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!
Note that the above links are chosen purely on the basis of visual
coolness; better links explaining the above techniques undoubtably
exist!