ECE660 Interactive Computer Graphics Spring, 2003
Project #2 Wonderful Whirler Watcher
Due on-campus: Friday March 28, 2003; off-campus: ~2 weeks after receipt.
The Wonderful Whirler Watcher
Fashion and exercise a program that lets a user fly a camera through a
dynamically changing scene. The scene consists of the three coordinate
axes (each shown as a thin cylinder of length 2 with a small cone at its
end), the axis of rotation (shown as a thin cylinder emanating from the
origin), and the chosen object rotating about the axis of rotation.
The Objects: The user can choose which object is displayed from
a fixed set, (by picking from a menu or using GLUI radio buttons). The
set of objects consists of the nine shapes listed on pages 659-660 (pages
583-584 if you are using the Second edition), plus the cylinder described
on page 489 (or page 431 in the Second edition). Wireframe or solid views
of each object are selectable by the user.
1). The axis of revolution for the mesh passes through the origin.
The user can alter the azimuth and latitude of the axis using key presses
or GLUI stuff:
-
Increase or decrease the azimuth by a certain amount, (default azimuth
= 450);
-
Increase or decrease the latitude by a certain amount, (default latitude
= 370);
2). The speed of revolution about this axis is also controllable:
-
Rotate faster or slower, (default speed = 0);
3). Some models (the sphere, cone, cylinder, torus, etc.) take parameters
such as nsides, stacks, slices, and rings,
which specify how precisely the curved shape is modeled. Arrange so the
user can increment or decrement these values (using GLUI controls, or keystrokes:
'+' and '-').
4). The user can switch modes between wireframe views and
lighted solid views.
a. In wireframe views, each object has its own characteristic
color.
b. For lighted views, the light source is located at (10, 10, 10) and
has a color of (1,1,1). All surface material has ambient reflection coefficent
(.2, .2, .2), and diffuse reflection coefficient (.8, .8, .8).
5). The default camera is defined through gluLookAt(0, 0, 10.0,
0, 0, 0, 0, 1, 0) and gluPerspective(45, 1.5, 1, 10). The
user can change its properties (using key presses or GLUI stuff):
-
Move the eye forward faster or slower (in the negative z-direction), (default
is no motion at all).
-
Stop the camera motion, and resume it.
-
Initialize the camera back to its default position;
-
Increase or decrease the field of view by some amount;
Extra credit (10 points) (required if you work in groups of two or
more) Add other controls:
a. Change the size of objects
b. Change lighting conditions: the position and color of the light
source.