COS 426 Computer Graphics - Fall 1997

COS 426 Home

Projects

Project 0

Project 1 (hints)

Project 2 (hints)

Project 3 (hints)

Project 4 (hints)

Project 5 (hints)

Project 6
Project 3 - Illustrator
Assigned: 10/13/97
Due: 11/02/97
Points: 20

The purpose of this project is to extend your program from Project 1 to handle smooth curves. Most of the features will involve 2D manipulation, but there will also be a small 3D component. (This is just a taste of what will follow after Fall Break when we focus on 3D more seriously.)

Required features (15 points total)

1. Scan convert cubic Bezier curves by recursively subdividing a fixed number of times.

2. Choose a letter of the alphabet and design a shape for that character constructed out of Bezier curves. (If you do this 25 more times, you are a font designer.)

3. Print to postscript and use the postscript engine to scan convert.

4. Implement Catmull-Rom splines using the Bezier curves as primitives.

5. Implement Cubic B-splines too.

6. Generate a surface of revolution by wrapping your curves around the Y axis. Dump this to an Inventor file. View it using ivview. Check out /usr/demos/Inventor/revo for for an example program that creates surfaces of revolution with polygonal profiles.


Optional features
The following list shows the optional features in order of increasing difficulty. The number in front of an item indicates how many points it is worth.

(1) Implement adaptive subdivision for drawing Bezier curves in relatively straight segments.

(1) Use a "tension" parameter in your Catmull-Rom splines.

(1) Allow the user to drag the control points of the curves around, interactively changing the curve.

(2) Draw Bezier curves of any degree (any number of control points).

(2) Closed splines and endpoint-interpolating splines.

(2) Don't forget the art contest.

(3) Implement quadratic and quintic B-splines.

(3) Other splines, e.g. C2 interpolating or Beta splines or NURBS. (3 points each).

(3) Modify B-spline (or other) curves by direct manipulation.

(4) Implement swept surfaces. The user specifies both a profile curve and a sweep curve (trajectory). The profile curve is swept along the path of the sweep curve to produce a surface.

(9) Implement multiresolution curves (Finkelstein and Salesin, SIGGRAPH 94).


Hints
Keep an eye on the hints that will appear during the course of this project, from frequently asked questions, precepts, etc.

Credit
Same as before.

Last update: Sun Nov 30 18:08:35 EST 1997