CSCI 5229 - COMPUTER GRAPHICS, Fall 2003
Oliver McBryan Engineering Center ECOT 638 303-665-0544 email@example.com
Class Time and Location: Thursday 5:00-7:30PM. Room ECCR 108
Office Hours: Thu 3-5PM or after class Location: ECOT 638 Always contact me by email about arranging to meet me during office hours.
Email should be a major mode of interaction between us. I can be reached as firstname.lastname@example.org. I will email everyone at the address you have given me. You can of course introduce a .forward to another location if you prefer.
Please approach me first by email if you are having difficulties with the lectures, text or assignments or want to meet during office hours. Email provides 7-days a week (including evenings) interactivity and where questions are asked that have a general usefulness, allows me to reply to the whole class, not just the person posing the question - frequently others will be having the same difficulty. Furthermore I usually read email even when traveling and attempt to reply remotely. Also feel free to call me at 303-665-0544 which is my cell phone. You can call 7 days a week at reasonable hours. However usually email will prove best.
The most important mathematical prerequisite is to be familiar with elementary vectors and matrices. In fact the vectors and matrices will almost never be more than 4 dimensional. Typically you need to know how to multiply 4x4 matrices. In addition, one or two lectures later on will benefit from knowing how to differentiate a low-degree polynomial in one or several variables. A familiarity with trigonometry and elementary algebra will be assumed.
Everyone should be familiar with C, or one of its flavors. C like languages will generally be the best choice and will be used to illustrate examples. It can sometimes be harder to get codes going in C++ or in Java - and harder to interface to some C code that I will supply.
Familiarity with basic UNIX concepts is assumed, I do not have time to help out with strictly UNIX questions.
I will assume that everyone is familiar with X11 at the window application level (as opposed to the programming level which we will discuss during the course). CNS offers one-session introductory X11 courses which you might inquire about.
The primary text for the course will be:
J. Foley, A. Van Dam, S. Feiner and J. Hughes Computer Graphics: Principles and Practice, Second Edition in C Addison Wesley 1996 or later.
It is essential to acquire the second edition. The first edition used a notation that is annoyingly different from the second. My lectures will refer to the notations of the second edition, and if you use the first edition you will need to be extremely careful (there is nothing actually wrong with the first edition - it simply reverses the order of operations, which can be confusing if you compare to my lectures or the second edition). In addition the second edition covers many new topics such as fractals, user interfaces and a more up to date treatment of hardware. While we will not cover everything in the text we will hit most of it and the text is a useful graphics reference for the future.
A smaller version of the text is available as: J. Foley, A. Van Dam, S. Feiner, J. Hughes and R. Phillips Introduction to Computer Graphics Addison Wesley 1994.
It covers most of what we will need and will be perfectly adequate. However if I specify sections to read, these will be specified as in the big book - you'll need to locate them in the smaller one.
Assignments, Tests, Grading:
The course will be heavily oriented towards development of graphics software and hands-on experience of algorithms. During the course you will incrementally build a full 3D color graphics package including hidden surface removal. This package will be developed through a series of specific assignments which will have the package as an end result. Further projects will create software for parametric cubic surfaces, ray tracing and other graphics applications, but usually building on the 3D package. Assignments will often generally require several weeks to complete and may at times overlap depending on your rate of progress. In almost all cases the due date for an assignment will be at least 2 weeks after I give the assignment. The assignments will be sufficiently challenging that the course should not be taken by someone who will not have significant time available for developing them. Later assignments will require large amounts of programming/debugging.
Each program needs a paragraph(s) at the top describing what it does and the main approach. Each program should also print the owner's name when run.
There will be no tests or final. The grade for the course will be based entirely on the assignments. An assignment will always be submitted as source code but will be graded "by demonstration". More on that later. Anyone completing fully all assignments should expect an A, and I will be happy to see the whole class get an A if this should happen.
I will not give incompletes at the end of the course (extreme emergencies excepted).
1. Develop the fundamentals of 2D and 3D graphics, including a complete treatment of projections, transformations and hidden surface algorithms.
2. Implement all of the algorithms described in 1. in the form of a complete graphics package, designed from the start to be device-independent and portable.
3. Treatment of further selected topics including bicubic spline patches, color and lighting models, ray tracing, graphics standards (including X11, Open_GL), graphics formats for the WWW, compression methods as time permits.
World, Normalized Device and Screen Coordinates Windows, Viewports, Segments The NDC Transformation Graphics Primitives for point, line, curve and text drawing Scan Conversion of lines and polygons Clipping algorithms for lines and polygons Device independence and portability 2D Graphics Package: drivers for raster and vector devices Transformations: translation, rotation, scaling, shearing Transformations: homogeneous coordinates Transformations: composition and role in graphics package
3D World Coordinates and the NDC Transformation 3D View and Projection Specification 3D Transformations: translation, rotation, scaling, shearing General 3D rotation: from one axis to another 3D Projections: nature and classification Projection transformation matrices Canonical View Volumes Complete transformation matrix for general 3D viewing Polygon Clipping, Polygon Scan-conversion Hidden Line and Hidden Surface Algorithms
Selected Topics (as time permits):
Illumination and Shading Models Shadows and Transparency Antialiasing Parametric Curves and Surfaces Rendering: The Utah Teapot Color and Color Models Fractals Interaction Devices Animation Object Hierarchy Solid Modeling X11: Overview and use GKS: Overview and use PHIGS: Overview and use WWW: Graphics formats for images and video