Math 155B - Geometric Computer Graphics
Final Class Programming Project

Due date: TBA (probably last weekend before finals)

Choose a substantial project, either from the list below, or choose a project of your own.  The project should involve programming and some substantial use of graphics or animation.  All project plans need prior approval from Buss, NO LATER THAN FRIDAY, MAY 25.

Results: should include several JPEG/GIF images suitable for posting on the web (with your permission).  If you write an interactive program, then you should save screen shots showing the basic functionality.  Grading will be individual as usual.  In addition, we will schedule a "demo session" during the second half of final exam week where you can demo your program and see your fellow students' programs.

Possible topics:

1. A ray traced scene.  This should incorporate some distributed ray tracing, and show use lighting, transmission, reflection, etc. to good effect.  This should extend what you did in the third programming assignment.  Check out some of the examples on the web in the Univ. of Waterloo's 488/688 graphics course if you want to get some ideas.
2. Backwards ray tracing.  Implement either an illumination map or photon map.  Generate focuses light caustics.
3. Animation.  Use animation with the aid of splines or Bezier curves.   One of the following, for instance:
1. An articulated object (such as humanoid or animal or "Pixar lamp").    Animate via forward kinematics.
2. Build a dancing teapot that maintains a smooth surface during its movements.
3. Quarternion interpolation of orientation.
4. Implement inverse kinematics for a linear chain of jointed rigid objects. [This is hard to do well!]
4. Spline investigation.  Extend the second homework by writing a program that implements more sophisticated spline interpolation.  One or both of the following:
1. Implement B-spline interpolation based on inversion of a tridiagonal matrix.
2. True chord-length parameterization.
5. Computer game.  Write a simple computer game with a significant graphics or animation component.
6. Procedural, noise-based textures.  Learn about procedural, noise-based textures and create textures such as wood-grain and marble.  Optionally incorporate into the ray tracing code.
7. Other.  You may also think up your own project.  Again, must be approved by Friday, May 25.

Grading standards:  You will be graded on (a) Artistic merit, i.e., attractiveness of the results and/or on how the scene illustrates features of your code; and (b) Technical difficulty and/or mathematical difficulty of the project  (c) Ambitiousness of the project and how well you succeeded in the project.

Turn in:  You will need to turn in at least one JPEG and a GIF thumbnail sketch.  Plus, you may make a separate web page if you wish.

Here are the overall instructions on what to do.  By following these directions, you may make (a) a thumb nail sketch and (b) a web page of your own with at least one JPEG.  This will allow me to quickly set up the course web page showing everyone's projects.

1. Copy the files FinalPageTest.html and PersonalPage.html from the public folder P:
2. Use your favorite editor (Notepad is fine) to open PersonalPage.html and change the student name to your name.  You make other changes later to this file if you wish.
3. Create the files Prog4Img1.jpg and Prog4Thumb.gif by following the directions below.
4. Check that everything looks OK by pointing your browser to your own file FinalPageTest.html.
5. Use anonymous ftp to send the three files  PersonalPage.html, Prog4Img1.jpg and Prog4Thumb.gif to the computer math.ucsd.edu, directory pub/sbuss/Math155/ma155wxx  where ma155wxx is your course userid.  Place the three files in that directory.  If you place more than one JPEG file please make the appropriate change to your PersonalPage.html file to display all the JPEG's. (Just copy the line which loads the JPEG image, and change the name to the other file name.)
6. I will set up a common web page showing everyone's image.

Here are the instructions on creating the final JPEG/GIF.   Please follow them EXACTLY, including the file names and their capitalization.

1. Use ALT-PRINTSCEEN to dump a screen image to the clipboard.
2. Run Photoshop (not the Kodak Image program!!!).  Under the File nenu, select making a new image.  Accept the default size (which will match the size of the clipboard contents).  Paste the clipboard contents into the new image.   Save the file as Prog4Img1.jpg (use "Save As..." under the file menu).   USE EXACTLY THIS NAME.
3. If you want to save more JPEG files use the names Prog4Img2.jpg, etc.
4. Under the Image menu, choose Image Size..., then change the height to 144 pixels (not inches!!).   Let the width change automatically proportionally.
5. Save the resulting small picture as GIF file named  Prog4Thumb.gif  (named exactly this way!).  For this, go to the File menu and choose Export.