CS4204 - Computer Graphics
Spring 2007, CRN 11716
Tu, Th 2:00pm, McBryde 318
|
|
|
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
- Angel, Edward, Interactive Computer Graphics, 4th Edition, Addison-Wesley Longman,
2006.
You will also need a supplementary reference for OpenGL. One option is Dr. Angel's
OpenGL primer. However, the Programming Guide by Woo, et al is still better and is
highly recommended because it treats not only OpenGL programming but also a
broad spectrum of the applications that OpenGL is designed to support.
References
- Angel, Edward,
OpenGL, a Primer, Addison-Wesley, 2002.
- Hill, Francis S.,
Computer Graphics Using OpenGL, Prentice-Hall, 2001.
- Foley, J, et.al., Computer Graphics, Principles and Practice,
Addison-Wesley, 1990.
- Foley, J., van Dam, A., Feiner, S., Hughes, J., and Phillips, R.,
Introduction to Computer Graphics, Addison-Wesley, 1994.
- Fosner, R., OpenGL Programming for Windows 95 and Windows NT,
Addison-Wesley, 1997.
- Shreiner, D., OpenGL Reference Manual, 4th Edition,
Addison-Wesley, 2004.
- Kilgard, M.J., OpenGL Programming for the X Window System,
Addison-Wesley, 1996.
- Shreiner, D., Woo, M., Neider, J., and Davis, T.,
OpenGL Programming Guide, 4th Edition,
Addison-Wesley, 2004.
- SGI's OpenGL WWW
products Site
- ACM Computing Surveys, Special Issue: Graphics Standards, December 1978
- ACM SIGGRAPH Computer Graphics, Special GKS Issue, February 1984
- ANSI PHIGS Standard X3.144-1988, ANSI, 1988
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 graphics | 10% |
- Graphical programming APIs
- Basic concepts and definitions
- Synthetic camera analogy
- OpenGL basics
-
- Device and data categories
- Input modes
- Callbacks
- Glut basics
| Mathematical foundations | 15% |
- 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
-
- 2D translation, scaling, rotation, and shear
- Windowing transformations
- Instance transformations
- Structured graphics
- 3D translation, scaling, rotation
- Viewing transformations
- Transformation pipeline
-
- Orthographic viewing
- OpenGL perspective API
- Foley-vanDam Perspective API
- Mathematics of perspective
- OpenGL projection matrices
- Projection taxonomy
-
- Cohen-Sutherland
- Newman and Sproull
- Cyrus-Beck
- Polygon clipping
-
-
- DDA, Bresenham
- Polygon scan conversion
- Antialiasing
-
- Ray tracing
- Human vision and color
- Lighting, reflection, and transmission models
- Shading algorithms