# Computer Science Department

## CS480/680: Computer Graphics (Spring 99)

• #### Texts:

Foley et. al., Introduction to Computer Graphics (Addison-Wesley, 1994) Errata list for the textbook
Mason Woo, Jackie Neider, and Tom Davis OpenGL Programming Guide (Addison-Wesley, 1997)

• #### Other Texts:

• D. Hearn and M.P. Baker, Computer Graphics (Prentice-Hall, 1997)
• E. Angel, Interactive Computer Graphics (Addison-Wesley, 1997)
• D. Rogers, Procedural Elements for Computer Graphics (2nd edition, McGraw-Hills, 1998)

## Course Description

The goal of this course is to convey understanding of the process of modeling and generating images of 3D objects. We will start by studying the basic process of drawing primitive objects on a display (lines, circles, polygons). We will then look at the process of building two and three dimensional mathematical models of more complex objects, manipulating and combining these models, and projecting the models onto a two dimensional image space. Along the way we'll also spend some time on windowing systems and on drawing more complex primitive objects such as curves and surfaces.

## Course Outline (tentative)

• Introduction (Chapter 1)
• Input-Output devices (logical devices, Chapter 2)
• Line Scan algorithms, Polygon Filling, Clipping (Chapter 3)
• Geometrical Transformations (Chapter 5)
• Projections (Chapter 6)
• Visible-Surface Determination (Chapter 13)
• Illumination models (Chapter 16)
• Representation of Curves and Surfaces (Chapter 9)
• Solid Modeling (Chapter 10)

## Course Prerequisites

This course provides an introduction to two dimensional and three dimensional computer graphics. In order to understand the material in this course, you will need to have a good working knowledge of data structures such as linked lists, trees, symbol tables, and dynamically allocated structures. You will need to know how to implement these data structures in C or C++. This course will also draw on knowledge of 2D and 3D geometry of vectors and coordinate systems, and on the use of matrix algebra for coordinate transformations. (CS308 - Data Structures, MATH182 - Calculus II)

## Exams and Assignments

Grading will be based on a midterm and a final exam, homework assignments, and a series of programming projects which will be assigned through the semester. The exams will emphasize the ideas, principles and mathematics behind the material covered and will not involve writing code fragments. Project submissions will each include a code listing and a written project description (also see how to turn in the assignments). Programming may be done on any departmental workstation or on other machines accessible to the student. All programs will involve the use of OpenGL which is available on the SGI machines in Tompson's lab (321 LME). If you prefer to do your programming on the Sun machines, you can use the Mesa graphics library which s a very close emulator of OpenGL. Mesa is publicly available to those who wish to use it on private systems (see the Mesa Home Page).

## More on Mesa

The include files are located in /usr/local/include/GL, libraries are in /usr/local/lib. The source code is in /image/Mesa-3.0. Sample executable OpenGL programs along their source code can be found in /image/Mesa-3.0/demos. The source code examples of the OpenGL Programming Guide can be found in /image/Mesa-3.0/book. I encourage you to try the sample programs (to compile the demos in your home directory, copy the file Make-config in your home directory and use the following makefile. To use OpenGL, the LD_LIBRARY_PATH environment variable must contain the directories /usr/local/lib/X11 and /usr/openwin/lib. This can be done with the following command, which you should add to your ~/.cshrc file:

setenv LD_LIBRARY_PATH /usr/local/lib/X11:/usr/openwin/lib

## Handouts

Department of Computer Science, University of Nevada, Reno, NV 89557
Page created and maintained by: Dr. George Bebis (bebis@cs.unr.edu)