## CSC 290 Computer Graphics: Assignments

The assignments will be posted here after the day's class. In general, homework is due, in class, one week from the class period it is assigned.

Thursday, January 18, 2001
Topics: Watched SIGGRAPH 99 Video Proceeding.
Reading assignment: Foley et al. Chapter 1.

Tuesday, January 23, 2001
Topics: Introductory material Text: Foley et al. Chapter 1.
Reading assignment: Foley et al. Chapter 2.
Homework: Exercises 1.1, 1.2, 1.3, 1.4, 1.7, 1.8.
Due Tuesday, January 30, 2001.

Thursday, January 25, 2001
Topics: Simple Raster Graphics Package (SRGP).
Text: Foley et al. Chapter 2.
Reading Assignment: OpenGL book, chapters 1 and 2. Homework: Exercises 2.1, 2.2, 2.3, 2.6, 2.9, 2.10, 2.11.
Note that 2.3, 2.10, and 2.11 involve programming. Check the web page to see how the TA wants material handed in.
Due Thursday, February 1, 2000.

Tuesday, January 30, 2001
Topics: Tutorial by TA Paul Illardi on using OpenGL and FLTK in Sun Unix environment.
Text: OpenGL Chapter 1, 2.
Reading assignment: Foley et al. Chapter 3 (first half at least); re-read OpenGL Chapters 1 and 2.

Thursday, February 1, 2001
Text: Foley et al. Chapter 3.
Topics: Simple raster algorithms, scan converting lines
Reading assigment: Finish Foley et al. Chapter 3
Homework: Exercises 3.2, 3.8, 3.14, 3.16, 3.17, 3.24, 3.29, 3.30.
For 3.24, implement your algorithm and show the raster output for some representative examples. You will probably want to magnify this output so the detailed behavior is visible. You can use SRGP or OpenGL to display the output, or even just generate a printable image directly if you have tools for that.
Due Thursday, February 8, 2001.

Tuesday, February 6, 2001
Topics: Simple raster algorithms, scan converting circles, ellipses, drawing filled polygons, clipping.
Text: Foley et al. Chapter 3
Reading assignment: Foley et al. Chapter 4.

Thursday, February 8, 2001
Topics: Graphics Hardware Text: Foley et al. Chapter 4.
Homework Assignment: Exercises 4.1, 4.2, 4.3, 4.6, 4.10, 4.12, 4.13, 4.14.
Due Thursday, February 15, 2000.

Tuesday, February 13, 2001
Topics: Graphics Hardware continued.
Text: Foley et al. Chapter 4.
Reading Assignment: Foley et al. chapter 5.

Thursday, February 15, 2001
Topics: Geometric transformations. 2D homogeneous coordinates, transformations. Text: Foley et al. Chapter 5.
Homework Assignment: Exercises 5.1, 5.2, 5.3, 5.4, 5.11, 5.12, 5.13, 5.14, 5.19.
Due Thursday, February 22, 2001.

Tuesday, February 20, 2001
Topics: Geometric transformations. vectors, matrices, 2D translation, rotation, and scaling. Text: Foley et al. chapter 5.
Reading Assignment: Foley et al. chapter 6, OpenGL chapter 3.

Thursday, February 22, 2001
Topics: 3D viewing. 3D homogeneous coordinates. Transformations - translation, rotation, projection.
Text: Foley et al. chapter 6, OpenGL chapter 3.
Homework assignment: Exercises 6.1, 6.3, 6.4, 6.9, 6.12, 6.15.
Exercise 6.1 may be done using OpenGL transformation routines, though if you want to do it from scratch, using raster line-drawing operations and your work from 6.15, feel free. For Exercise 15, use OpenGL to check your results by directly comparing the matrices you obtain for several combinations with ones produced by calls to various OpenGL transformations. Then apply the OpenGL transformations to some simple 3D line drawing (e.g. the unit cube or the house) and verify that what you expect to happen did indeed happen. This is a good way to understand exactly what the OpenGL operations do.
Due Thursday, February 29, 2001 (I'm being optimistic here).

Tuesday, February 27, 2001
Topics: 3D viewing. Projections, World to cameras mappings, Viewport definitions, Normalized projection coordinates etc.
Text: Foley et al. chapter 6, OpenGL chapter 3.
Reading Assignment: Foley et al. Chapter 13, OpenGL Chapter 4.
Thursday, March 1, 2001
Topics: Light and color. Perception of light, Representation on displays, Gamma correction, Halftoning, Dithering.
Text: Foley et al. Chapter 13, OpenGL Chapter 4.
Homework Assignment: Exercises 13.1, 13.3, 13.4, 13.7, 13.9, 13.17, 13.18.
Due Tuesday, March 20, 2001.

Tuesday, March 6, 2001
SPRING BREAK

Thursday, March 8, 2001
SPRING BREAK

Tuesday, March 13, 2001
Midterm exam: Material through chapter 6 in Foley et al. Reading Assignment: Foley et al. chapter 14.

Thursday, March 15, 2001
Topics: Light and color continued. Color perception and measurement, color models, etc.
Text: Foley et al. Chapter 13, OpenGL Chapter 4.
Reading Assignment: Foley et al. chapters 14, 16, OpenGL chapter 5, 6.
Programming assignment: Create a virtual city with 10+ skyscrapers constructed by scaling, translating, and rotating a basic cube. Render your city using an illumination model with at least ambient and diffuse components, and provide an interface that allows a viewer to interactively "fly through" your city in 3D to any point. A simple (minimal) possibility is to provide control over the observer's compass direction and elevation combined with forward and backward motion. Even this has some tricky aspects. Other interfaces are possible.
Due Tuesday, March 27, 2001.

Tuesday, March 20, 2001
Topics: Illumination and Shading. Illumination models; ambient, diffuse, and specular models; Gouraud and Phong shading.
Text: Foley et al. chapters 14, 16, OpenGL chapter 5.
Reading Assignment: OpenGL chapters (6), 8, and 9. Homework Assignment: Exercises 16.2, 16.3, 16.4, 16.6.
Due Tuesday, March 27, 2001.

Thursday, March 22, 2001
Topics: Illumination and Shading Cont. Texture and bump maps; shadows; transparency; reflection maps.
Text: Foley et al. Chapter 16, OpenGL chapters 5, 6, and 9.
Reading Assignment: Foley et al. Chapter 15.

Tuesday, March 27, 2001
Topics: Visible Surface determination, radiosity and ray tracing.
Text: Foley et al. chapters 15, 16.
Reading Assignment: Foley et al. chapter 11.
Homework assignment: Exercises 15.3, 15.10, 15.11, 15.14.
Due Tuesday, April 3, 2001.
Programming assignment: Texture map your city. Try to obtain some interesting texture images, either by synthesizing them yourself with some sort of cool function (geometry, fractals, warped stuff) or by getting some external images into the computer (e.g. off the web). You will have to figure out how to get some image file format into program memory - OpenGL doesn't have file-reading routines as part of the standard. One way is to get images (or convert them using xv) into tif or ppm format, and use the tif or ppm libraries in /usr/vision/lib to get them into your program.
Due Tuesday, April 3, 2001.

Thursday, March 29, 2001
Topics: Visible surface determination continued.
Text: Foley et al. chapter 15.

Tuesday, April 3, 2001
Class canceled.

Thursday, April 5, 2001
Class canceled.

Tuesday, April 10, 2001
Topics: Curve and surface representation.
Text: Foley et al. Chapter 11. OpenGL chapters 11 and 12.
Programming assignment: Ray tracing project. Implement a simple recursive ray tracer that can render, at a minimum, several metallic and/or glass spheres above and/or in front of one or more textured background planes. You should implement at least specular reflection, and you should attempt to implement refractive transparency as well (i.e. glass spheres that display both reflective and lensing effects). You should be able to demonstrate interreflections of the spheres. An ambient lighting model is sufficient to demonstrate these effects; however if you are feeling ambitious, you could add light sources, diffuse illumination, and shadows. Parameters you will need to play with include the reflectivity of the spheres (typically from 10% to 90%), and their index of refraction if transparent (ordinary glass is around 1.3). Other parameters you might want to play with include ambient or diffuse colors of the spheres (the sphere may have some color in addition to specularly reflected or transmitted rays), color variation in the specular reflection coefficient (think colored Christmas balls), color variation in the refracted component (think colored glass), and attenuation through the transparent medium. You could also throw in a few other (shiny or non-shiny) objects for variety if you feel like it. Your program should allow you to input positions and characteristics of a handful of objects, and output the ray-traced result. You should hand in a writeup decribing your implementation, its features and limitations, what problems you encountered and how you resolved them, along with a couple examples of generated images. You should also send the TA a pointer to your (working) code so he can try an example with it. You don't need to worry overly about efficiency - testing each ray against all the objects is fine, as there will only be a few.
Due Tuesday, May 1, 2001.

Thursday, April 12, 2001
Topics: Curve and surface representation.
Text: Foley et al. Chapter 11. OpenGL Chapters 11 and 12.
Reading Assignment: Foley et al. Chapter 20.
Homework Assignment: Exercises 11.2, 11.4, 11.7, 11.9, 11.13.
Due Thursday, April 19, 2001.

Tuesday, April 17, 2001