2001 Final Exam

Here is the final exam question, or rather program, as I think for this class a final exam based on 'doing' makes much more sense than one based on writing.

The program is due Monday December 3rd at 3:30pm. At that time we will all have one last round of show and tell. This will give you 8 days to get the program done.

This program is 'running around in circles' and will highlight flocking behaviour. We start with racetrack in the shape of a figure-8 or the symbol for infinity. The race track is flat and the racers can either move on the surface or over it.

There will be n racers where n is a number that makes things interesting to watch

If a racer should stray outside the track area then they should slow down, as it is harder to move when outside the track. If 2 racers get too close together they should 'crash' and remain stunned for a certain period of time before resuming the race. The idea behind both of these rules is to try and break the flock up so things look more dynamic. A figure-8 track was also chosen to make things 'interesting' at the intersection.

The user should be able to rotate the camera around the racetrack, zoom in and out to see things from different angles.

It will be written in OpenGL and GLUT.

All code, of course, will be your own and you will do all work on your own.


You are highly encouraged to add your own interesting ideas - creativity is worth many points. e.g.
- what are the things that are racing? balls? blobs? bugs?
- why are they racing? are they chasing something? Lots of social commentary possible here
- maybe allow the user to see the view from the point of view of one of the racers
- maybe create your own hazards
- maybe have different starting formations to show different interesting phenomena
- maybe allow the user to choose the characteristics of the racers

and hopefully have fun and learn something :)

Here are the answers to some questions that came up after Tuesday's class:

- There is no separate presentation score for the final exam project - you are graded on the content of the project, though a good presentation should highlight your work.

- For the grade breakdown in terms of what you need to do for each grade:

C - circular track (ie 1/2 of the figure 8 track)
racers following the 3 rules (separation, alignment, cohesion)
racers move (while flocking) around the circular track without going off the inside
or outside edge of the track

B - circular track (ie 1/2 of the figure 8 track)
racers following the 3 rules (separation, alignment, cohesion)
racers can collide and stun each other if they get too close
racers slow down when off the inside or outside of the track

A - figure 8 track
racers following the 3 rules (separation, alignment, cohesion)
racers can collide and stun each other if they get too close
racers slow down when off the inside or outside of the track
movable camera
racers are some kind of creature (not just a ball or a cube or a pyramid)
new user-defined hazards

You should be able to get the 'C' work done in part of an afternoon, and the additional 'B' work done in an evening. Really. This is not hard.

- In terms of what direction the racers should go, on the circular track the rough direction of travel is always given by their position - they should be moving tangentially. With the figure 8 you also need to handle the crossover, but that's just a question of knowing the general E/W direction of motion on the shared stretch since going one way you will always curve to the S and going the other way you will always curve to the N, or if you are in the north loop then you will always go to the south loop next and vice-versa.

- Dealing with the hard/soft edges of the track is an extension of trying to keep the racers in the center of the track - the further they get from the happy radius in the center of the track , the larger a penalty they incur, so the racers should always be trying to get to the center of the track.


last revision 11/18/07