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 1 - MacDraw
Assigned: 09/15/97
Due: 09/28/97
Points: 20

The purpose of this assignment is to create a simple drawing program. Most of the user interface (implemented in Tcl) will be provided for you, so the features you are required to implement focus on scan-conversion. However, those of you who are interested in extending the user-interface may do so as part of the optional portions of this project.

Getting started
To get started, download the user-interface, or (if that doesn't work) make a copy of the directory (in MECA)

% /u/cs426/projects/project1.tar.gz

These files may be unpacked in your directory by typing:

% gunzip project1.tar.gz
% tar xvf project1.tar
% rm project1.tar

The first thing to try is:

% make depend
% make
% draw.tcl

Required features (15 points total)

1. Implement line drawing using Bresenham's algorithm.

2. Implement triangle scan-conversion for filled triangles.

3. Fill convex polygons (by subdividing into triangles).

4. Draw circles as described in the text.

5. Print to postscript.

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.

(0) Do not do curves. We're saving them for project 3.

(1) Compare execution times for the GL implementation and your implementation for various features and describe the results in your writeup.

(1) Edit mode: allow user to move vertices.

(2) Ellipse, filled circle.

(2) Save image using ppm format (see "man ppm").

(4) Fill attributes: color, pattern, etc.

(4) Line attributes: color, thickness, stipple, etc.

(4) Antialiased lines.

(4) Edit operations: cut, copy, paste, undo, redo, group, ungroup.
(5) Text (either bitmap or vector-based).

(?) Any other feature you find interesting. Ask a TA if you want to know how many points it is worth.


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

Credit
Each item on the list above shows the number of points available for implementing the optional features described. Partial implementations will receive partial credit. To receive "full credit" for the assignment, you will have to implement all the required features (15 points) as well as 5 points worth of optional features. If you receive close to the equivalent of full credit for all your projects (170 total points are possible) you will get an A for the class.
After full credit on the assignment, you may receive "extra credit" up to 25 points by implementing more optional features, but the extra credit points only count half as much as the optional credit points. For example, if you implement the full 15 required points, as well as 15 points more worth of optional features, your score for the assignment will be 15 + 5 + 10/2 = 25. The super-enthusiastic among you (who happen to have lots of time on your hands) may wish to implement even more features, extending your score past 25. All points after 25 count one quarter, so it will be very difficult to reach 30.

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