Computer Science 155: Graphics
Fall 2000
Homework 6


In the final assignment, you will construct a floor in 3D space with one overhead light. On the floor you'll build a roller coaster using parametric curves, a billboard that is texure mapped, and several semi-transparent objects. All objects in your world should cast shadows. This assignment is worth 150 points.

  1. (10 points) The floor should be tiled to achieve better lighting effects. The user should be able to rotate the floor about its center in the x-z plane in order to view your world from different perspectives.
  2. (60 points) The roller coaster track should be constructed using parametric curves. Rather than using Bezier curves, you should derive a cubic curve based on the first and last endpoints, p(0) and p(1), as well as the first and second derivatives at the first point, p'(0) and p''(0).
    Piece a few of these curves together (perhaps 3 curves) to make a smooth roller coaster track. This will take just a bit of calculation to work out. (Note that although these curves only allow you to specify the first and second derivatives at the starting point, you can easily compute the first and second derivatives at the ending point. You can then use these values for specifying the next curve.) Your program should draw a piecewise linear approximation of the track.
    The user should be able to take a roller coaster ride. To do this you should position the viewpoint on (or slightly above) the track with the center of attention vector tangent to the curve.
  3. (20 points) Add a couple of semi-translucent object by using blending. Use the trick from class to make sure that semi-translucent objects don't obscure opaque objects (using read-only mode for the z-buffer).
  4. (30 points) Add a rectangular billboard and texture-map a design onto the billboard.
  5. (30 points) Finally, add shadows. Specifically, have a light source positioned someplace well above the floor. Compute shadows with respect to this light source for each object in the scene.