B581 Computer Graphics

Fall 2011

Summary of B581 Syllabus materials

*B581 Computer Graphics: Course Administration*

Instructor: Andrew Hanson

Class Meeting: Monday and Wednesday, 1:00pm to 2:15pm. The currently scheduled room is Lindley Hall LH008.   First meeting is Monday 29 August, 2011.

Grading Rubrik: There will be approximately six written-question assignments and approximately six coding homework assignments, counting for a total of 30% of the final grade, one in-class closed-book written Midterm exam (Mon Oct 17th) for 30% of the final grade, and one closed-book written Final exam (Wed Dec 14, 2011, 2:45pm-4:45pm) for 40% of the final grade.

Course Motivation:

A basic knowledge of computer graphics is useful for any task that involves a computer. Graphics has become a crucial part of many interfaces and applications. This course concentrates on the following issues:
  1. Fundamental principles of displaying 2D information using computer graphics.
  2. Fundamental principles of 3D geometry and light used to represent 3D information using computer graphics.
  3. Interactive techniques for real-time computer graphics.


C343, and M301 or M303 (data structures and mathematics that includes vectors and matrices) are required. C212, familiarity with Unix, and C programming experience are highly recommended; you will need to learn C very quickly if you do not know it already. M311 (calculus III, including geometry) may be very helpful. We will review the essential mathematics as needed.

Course Syllabus for B581 - Computer Graphics

All material will be covered in the online lecture notes. Most of the books on Computer Graphics cover very similar material. Specific references are given below to relevant sections of the older books by Hill, Hearn and Baker, and Foley, van Dam, Feiner, and Hughes, which are on reserve in Swain Library, but similar sections can be found in all books.


    1. Mathematical Introduction. Hill, Appendix 2; HB, Appendix A; Foley, Section 5.1.
    2. Introduction to Computer Graphics. Hill, Chapter 1; HB, Chapter 1; Foley, Section 1. History, interactivity, concepts.
    3. Computer Graphics Hardware. Hill, Chapter 1.4; HB, Chapters 2 and 8; Foley, Section 3.1, 4. Types of graphics devices: vector refresh graphics displays, raster refresh graphics displays; CRT basics; video basics; color CRT raster scan basics; interactive devices; display processors; graphics software.

    Two Dimensional Concepts.

    Hill, Chapters 1.3.4, 2.2, 2.3, 2.4, 3.2, 3.3, 4.2, 4.3, 4.8, 10.4; HB, Chapters 3, 4, 5, 6, 8; Foley, Section 3, 5.1--5, 8
    1. Output line primitives. Pixels and co-ordinates. Point and line primitives. Windows and the mapping of 2D space to pixel (device) space. Simple graphical constructions: rectangles, circles, ellipses, polygons. Basic concepts of 2D co-ordinate geometry: axes, points, vectors, lines, curves and their properties; analytic (functional) representation and parametric forms; convexity, orientation, inside and outside. Line drawing algorithms: midpoint, Bresenham, antialiasing. Circle and ellipse generation. Character generation. Frame buffer manipulations in general. 
    2. Output area fill primitives. Polygon area fill algorithms: Scanline, boundary-fill, flood-fill. Antialiasing area boundaries. Hatching and pattern filling. Blanking. Halftoning and dithering.
    3. Two-dimensional transformations. Translation, scaling and rotation. Matrix representations and homogeneous coordinates. Composite transformations. Inverse transformations. Window to viewport to screen transformations. Transformation commands and methods for constructing and storing information about scenes.
    4. Two-dimensional clipping. Line clipping algorithms: explicit rectangular window clipping, Sutherland-Cohen subdivision, midpoint subdivision, Cyrus-Beck generalized 2D clipping. Polygon and area clipping. Text strings and character clipping.
    5. Interactive input methods. Physical input devices. Logical input constructs: locator, stroke, string, valuator, choice and pick devices. Methods for using the mouse to interact with graphical objects. Interactive picture construction techniques. 

    Three-dimensional Concepts.

    Hill, Chapters 5.1-5.6, 6.2, 7.2, 7.3, 11, 13; HB, Chapters 9, 10, 11, 12, 13; Foley, Section 5, 6, 9.1--3
    1. Three-dimensional co-ordinate geometry. 3D representation of surfaces: polygon (wireframe), curved (Bezier and spline). Methods of surface generation. HB, Chapters 9 and 10. 
    2. Three-dimensional transformations. Translation, scaling and rotation. Composite transformations. Reflections and shears. Programming considerations. HB, Chapter 11.
    3. Three-dimensional viewing. Parallel and perspective projections. Viewing transformations and the viewing volume. Clipping against the view volume. 3D Cyrus-Beck algorithm. Polygon clipping. Programming 3D views. HB, Chapter 12. 
    4. Hidden-surface and hidden-line removal. Classification of methods: floating horizon, back-face removal, depth-buffer, scan-line, depth-sorting, area-subdivision, and octree. Visible surfaces using ray tracing techniques. HB, Chapter 13. 

    Light, Surface Rendering, and Animation Techniques.

    Hill, Chapter 8, 10.8, 12 (Color), 14 (Ray Tracing); HB, Chapters 14, 15, 16; Foley, Section 11, 12, 13.1-13.2, 14.1-14.2.
    1. Modeling light intensities. Sources. Diffuse and specular reflection, ambient light, refraction, texture and surface patterns. 
    2. Surface models. Surface shading methods. Developing a shading model. Constant shading. Gouraud intensity interpolation and Phong normal interpolation. Ray tracing methods. Transparency, reflections, shadows and texture. 
    3. Color models. 
    4. Three dimensional interactive techniques. Aspects of 3D viewing and 3D input devices. 
    5. Photorealistic methods. Overview. 
    6. Advanced Features of OpenGL. Texture, antialiasing, shadows, accumulation buffer, stencil buffer, ... 
    7. Animation methods. Overview. 
    8. Scene Modeling methods. Topics if time permits... 
    9. Scientific visualization methods. Topics if time permits... 


Indiana University Computer Science Program