Assignment 1

Handed out:  Thursday, October 1 1998
Due:  5pm, Thursday, October 15, 1998
Your assignment is to implement an impressionistic paint system, similar in spirit to Paul Haeberli's The Impressionist (this program exists as a Java Applet). Please try out Haeberli's program to get a feel for how the system should work.

Some images to get you started are in /usr/class/cs248/assignments/assignment1/images.

Your version of the The Impressionist program will load a full color image, allow the user to create a painting, and then save the resulting image. The painting, unlike the original image, will consist of a set of brush strokes: each stroke will have a color, a shape, a position, a size and an orientation. The strokes will be created by the user, by sweeping the mouse over the image, in the process picking up the color from the original image and laying down a stroke at the cursor location.

Your system should have the following features.

To help you get started, and to help you concentrate on the more interesting aspects of this assignment, we will provide a sample program and a collection of interesting images. The sample program will read in a full color image, and store the image in a 2D array. This program will also implement a clear button that erases the canvas, and a save button (that saves the painting in a file).  Here is some documentation on the sample program.

80% of your grade will be based on the features that you implement. That is, you will lose points for each of the above features that does not work correctly.  20% of your grade will be based on programming style; in particular, we may take off points for obfuscated code, or very inefficient use of OpenGL.

Your program should have the same user interface as the example program.  Your program will be tested semi automatically, so deviations from that user interface will break the testing process and will make everyone involved very unhappy.

Extra Credit. Up to 10 points of extra credit are available for implementing novel, and unique extensions to the base assignment. To apply for extra credit, write a one paragraph description of what you have come up with, and why you think it is interesting. Only highly original ideas will be awarded extra credit.

Here are a few suggestions:

Note that some of these suggestions are much more difficult to implement than others. We will judge the amount of extra credit you receive accordingly.

CS248: Introduction to Computer Graphics, Pat Hanrahan, Fall 98