CPSC 424: Introduction to Computer Graphics

      Department of Mathematics and Computer Science
      Hobart and William Smith Colleges

      Fall, 2017.

      Instructor:  David J. Eck  (eck@hws.edu)

      Monday, Wednesday, Friday, 12:20–1:15 PM.  
         Room Gulick 2000 (formerly room number 206A).
           (Except for several Mondays in Rosenberg 009.)
      Lab: Thursday, 11:55–1:20.  Room Rosenberg 009.
      Office hours in Lansing 313 (but also check the computer lab, Lansing 310):
           MWF, 11:15–12:10
           WF,  2:00–3:00
      (I am also often available at other times.)

      Course Handout:  http://math.hws.edu/eck/courses/cpsc424_f17.html
Programming Labs
Lab 1, August 31
2D Transforms
Lab 2, September 7
HTML Canvas Graphics
Lab 3, September 14
Hierarchical Modeling
Lab 4, September 21
Into 3D
Lab 5, September 28 Lab 6, October 5
Application Labs
September 11: Gimp 1 September 18: Gimp 2 September 25: Inkscape


First Week: August 28 and 30; September 1

Welcome to the course!

The reading for the week is Chapter 1 and the first three sections of Chapter 2. Chapter 1 is a short overview of computer graphics. You should not expect to understand everything in it, but it will give you an idea of what will be covered in the course. Chapter 2 covers two-dimensional graphics, using several graphics systems.

You should read Section 3 before class on Wednesday. Be prepared to discuss it. The lab on Thursday will be based on Section 3. You should read Section 1 and Section 2 before class on Friday.

When you read the book, you should pay some attention to the interactive demos, which are meant to help the reader understant the concepts better. You can find them in the web-site version of the book. There are links to the demos in the linked PDF version.

Second Week: September 4, 6, and 8

This week will be about the API for 2D graphics on the Web. This is a JavaScript API for drawing on a "canvas" element on a web page. This means that we will first have to talk about JavaScript and web pages more generally. A brief overview of this background material is in Appendix A, Section 3. The 2D API for canvas graphics is covered in Chapter 2, Section 6.

(Here's the very simple first web page that we will look at in class.)

Third Week: September 11, 13, and 15

On Monday, September 11, the class will meet in the computer lab, Rosenberg 009, for a session with the Gimp image editing program.

The reading for the week is Section 2.4, which covers hierarchical graphics and scene graphs. We have already started talking about hierarchical graphics last Friday. We will discuss scene graphs this Wednesday in class.

On Friday, we should be able to discuss three-dimensional coordinate systems and 3D graphics. It would be a good idea to start reading ahead in Chapter 3.

Here is the little "growing trees" scene graph example from Wednesday's class, written in JavaScript: GrowingTrees.html

Fourth Week: September 18, 20, and 22

Monday's class will be in Rosenberg 009, for another session with Gimp.

You should read Sections 3.1, 3.2, 3.6, and A.2.

We started our discussion of 3D graphics on Friday. The material covered there is in Section 3.1 and Section 3.2: some basic parts of the OpenGL 1.1 API for color and drawing primitives, plus general ideas about 3D coordinates and transformations. On Wednesday, we will need to cover everything else that you need to know for Thursday's lab. That includes how to do transformations in OpenGL 1.1 and, in particular, how to implement hierarchical modeling with glPushMatrix and glPopMatrix. We will also have to talk about using GLUT to draw things like spheres and cones; this is covered in Section 3.6.

The OpenGL API works most naturally with C, so it's useful to know at least a little bit out C if you want to understand the API. Fortunately, the API is relatively easy C. Appendix A, Section 2 is a short introduction to C. It would be useful to know something about pointers and arrays in C (but not the really hard stuff).