CS4204 - Computer Graphics
Spring 2007, CRN 11716
Tu, Th 2:00pm, McBryde 318

Class Materials URL: http://pixel.cs.vt.edu/courses/cs4204.html

Instructors

R.W. Ehrich, KW2 129, Office Hours: Tu, Th 3:30 - 5:00 in McB 618, or by appointment
Rongrong Wang, Office Hours: M, W 12:30 - 2:30 in McB 133A, or by appointment

Objectives

This is a senior level introduction to raster graphics technology. The goal is to provide both theory and practice so that the student will be easily conversant with techniques for scientific visualization, interface design, and 2- and 3-dimensional data representation and manipulation. The course will be based upon OpenGL, which though not a graphics standard, is being widely adopted as the graphics library of choice on many high-end graphics systems. In particular, OpenGL positions students to participate in virtual reality projects, such as those being conducted in the VT CAVE.

It is important to emphasize that this is not a course on OpenGL, but rather on the graphics concepts that OpenGL supports. However, some class time will be spent on OpenGL basics needed to support homework and projects.

Grading

The semester grade will be based upon assignments issued in class, which might involve some small programming exercises (20%), two OpenGL projects (one in 2D and one in 3D) (30%), two midterms (15% each), and a comprehensive final examination (20%). 25% credit per day will be deducted from late homework or project submissions.

Exams

Midterm 1, Tuesday, February 20
Midterm 2, Thursday, April 5
Final, Monday, May 7, 4:25pm - (NOTE: Classes end Wednesday, May 2)

No missed exams will be accepted unless by prior approval. All exams are closed-book exams. The final covers all the material in the course.

Ethics

The Honor Code will be strictly enforced. It is a violation to represent joint work as your own or to let others use your work; always acknowledge any assistance you received in preparing work that bears your name. You are expected to work independently unless explicitly permitted to collaborate on a particular assignment. It is not a violation to discuss approaches to programs with others; however, it IS a violation to use code fragments in your program that have been written by others without acknowledging the source.

Prerequisites

Math 3134 or Math 3034 and C or better in either CS 2604 or CS 2606
C/UNIX programming experience...single course exposure to C will not be adequate.

Laboratory Platform

Windows 2000 or XP

Text

References

Programming

Laboratory work will involve two projects in OpenGL on the Windows workstations in McB 116 or on the students' own computers in Microsoft Visual C++. This will provide experience in a portable graphics system with high performance and scientific capabilities. Both of the projects involve substantial programming, and competence in programming and debugging is assumed. Part of the project grade depends upon the documentation and quality of the presentation of the algorithms and structure of the graphics applications. Work may be done on other operating systems but must run on Windows due to the difficulties involved in evaluating work on diverse platforms.

OpenGL does not provide input functions, making it necessary for the programmer to do some window management and input programming. Most use the OpenGL Utility Library (GLUT) to do this (see the OpenGL Programming Guide), since GLUT is available for most platforms. Another interface library that you may use is GLUI, which lives under OpenGL. Alternately, Windows management may be done directly, perhaps using the tools provided in Fosner's book.

The projects may be done by teams of 2 programmers. Students may work alone, but will be graded on the same basis. Students who wish to work together must submit a collaboration form roughly 2 weeks before the project due dates.

Project deliverables include in the code documentation the problem statement, mathematical analysis, and statement of assumptions. All program modules will be required to have a header that includes the date, name of programmer, purpose, and description of function parameters, in addition to normal in-line comments.

Course Outline

Introduction to computer graphics10%
Graphical programming APIs
Basic concepts and definitions
Synthetic camera analogy
OpenGL basics

Graphical interaction5%
Device and data categories
Input modes
Callbacks
Glut basics

Mathematical foundations15%
Lines and line representations
Vector and affine spaces
Polygons and polygon interiors
Dot and cross products
Planes and plane representations
Line-line and line-plane intersections
Homogeneous coordinates

Transformations10%
2D translation, scaling, rotation, and shear
Windowing transformations
Instance transformations
Structured graphics
3D translation, scaling, rotation
Viewing transformations
Transformation pipeline

Viewing15%
Orthographic viewing
OpenGL perspective API
Foley-vanDam Perspective API
Mathematics of perspective
OpenGL projection matrices
Projection taxonomy

Clipping10%
Cohen-Sutherland
Newman and Sproull
Cyrus-Beck
Polygon clipping

Hidden Surface Removal5%

Scan Conversion15%
DDA, Bresenham
Polygon scan conversion
Antialiasing

Realism15%
Ray tracing
Human vision and color
Lighting, reflection, and transmission models
Shading algorithms