Intro Graphics Assignment 1
Impressionist Painting
Due: September 9, 2003
Overview
Your assignment is to implement an impressionistic paint system. Your 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.
Required Features
Getting Started
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 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.
Here is a link to a sample implementation for Windows.
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 25 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:
- Add brushes that are substantially different from those you are required to implement. Explain how your brushes are different and the types of effects they allow you to create.
- It can be time-consuming to paint an image manually. Add a feature so that a whole painting can be created automatically. Describe your algorithm for choosing the brush attributes in this automatic painting mode.
- One problem with the base system is that you can not see which part of the image you are painting while you paint. Solve this problem by showing a dimmed version of the original image while you paint. Add controls to show/remove the dimmed image from the canvas.
- Add methods for orienting the brush to the x,y color gradient or the edges in the original image.
- Automatically find edges in the original image and clip long brush stokes to those edges.
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.
Here is a link to an implementation of some of the extra credit features (again, for Windows).
Submitting
Write a web page describing what you did including your entry for the art contest. Your web page should provide a link to a .zip file containing all the source code required to compile your program
It is your responsibility to make sure that the .zip file you submit is complete. No credit will be given for programs that fail to compile.
E-mail a link to your submission to the TA. Never, NEVER e-mail the TA anything but a URL for your submission. In particular, do not mail your .zip file or any images as an attachment.
Results of the art contest can be found here.