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.