CMSC 110 (Introduction to Computing)
Assignment#6
Due
before start of class on Tuesday, November 22, 2011
For this project, choose ONE of two options. This is a larger
project than previous assignments, so be certain to start early.
Option 1: Design and implement an animated pseudo
three-dimensional scene. Create a sense of depth by reducing
the
size and linear velocity of objects that are farther away from the
viewer.
Encapsulate all graphic objects in a custom class of your own
design
with a method that draws the object on the sketch. The
drawing
functions in your object's draw method must render your object at
a
fixed location. Do not move or size your object by changing the
parameter values of your object's drawing functions. All object
animation must be generated by scaling, translating, and rotating
the
coordinate system prior to drawing each object.
Your sketch must include examples of all three transformations:
scale, translate, and rotate.
Here are some ideas to get you started:
- A long hallway filled with bouncing and rotating balls. The
farther a ball is from the viewer, the smaller it appears and
the
slower it bounces.
- A birdseye view of leaves falling from a tree. Leaves fall to
ground, rotating and getting smaller as they fall.
- A scene on a moon of Saturn where extraterrestrial insects
with
rotating propellers race across a lake of methane. The farther
the
insect is from the viewer, the smaller it appears and the slower
it
moves.
- A large rotating whirlpool that swallows anything dropped into
it. Objects start by slowly rotating about the center of the
whirlpool
at a large radius, but increasingly speed up and shrink in size
as the
they get closer to the center of the whirlpool, before being
swallowed
up entirely.
Option 2: Design and implement a creative art
project that operates on the pixels of an image or set of
images. This project is rather open ended, but it must go
significantly beyond any of the examples we cover in class.
Be certain to place any images you use under your sketch folder.
Here are some ideas to get you started:
- Implement a demonstration of multiple image filters, where the
user could click on a button at the bottom and select one of
multiple filters to apply to the image.
- Implement an animation that fractures a given image into parts
and then reconstructs the image by having pieces of the image
fall, twirl and spiral in from the top.
- Implement an automatic photo mosaic program, where the user
provides a folder of images and a target image, and then the
system creates a photo mosaic out of the given images for the
target image. (Be aware: this is a more difficult
project)
What to Hand in:
I strongly recommend that you test your
project from within the dropbox folder after you submit it to
ensure that it works.
- Copy the entire sketch folder to your Dropbox folder.
Also, be certain to include any image files needed for your
project.
- Make sure to name the sketch file/folder properly.
- Include the standard header in your source code.
- Write a paragraph/description and include it in the header of
the
main source code file for your sketch.
- Comment your code liberally with meaningful statements that
help
explain what your code is doing.
Hints:
- Keep it simple at first. Start with something basic, get
it
working, and then build upon it piece by piece, each time
ensuring it
is working before you move on to the next piece.
- Start with a hand-drawing of what you want.
- START EARLY!!! I cannot emphasize this enough.