Class Lectures and Reading Assignments
CS 45500 / CS 51580
Computer Graphics
Fall, 2020

This page documents what we do in class. It contains Java programs that we will discuss in class, reading assignments, simple homework exercises that you can work on for practice and exam preparation (not for credit), and links to other sources of information.

Here is a link to today's video lecture.

Here is the next renderer. It uses a hierarchical scene graph to draw complex, nested scenes.

I have cancelled the second exam and I updated the syllabus. The 4th programming asignment is the last part of the course. It is due Thursday, December 17.

Here is a link to today's video lecture.

See the homework assignment page for your fourth programming assignment.

Here is a link to today's video lecture.

Here are some notes from what we discussed in class today.

Here is a link to today's video lecture.

Here is the example we wrote in class today.

Thanksgiving Break. No class.

Here is a link to today's video lecture.

Here is the next renderer. It uses linear transformations.

Here are the notes we wrote in class today.

Here is a link to today's video lecture.

Read Sections 1.1 - 2.3 (pages 1 - 19), about linear transformations, from the following reference.

Read the following three references about linear transformations.

Here is the next renderer. It uses linear transformations.

Here is a link to today's video lecture.

This zip file now has some aspect ratio and view volume pictures in it.

Here is a link to today's video lecture. Unfortunately, Zoom really butchered all the resizing demos. If you watch the video, please try to simultaneously run the programs and do the resizing yourself, to see what effects I was talking about (but you don't see in the video).

We will look at renderer_6 which allows us to control the camera's view volume. This introduces the notion of aspect ratios.

Class was canceled because of illness.

Here is a link to today's video lecture.

The first midterm exam is today. The exam can be downloaded from Brightspace when class ends at 1:45. Your completed exam document is due back in Brightspace at midnight this evening. The exam document is on the same page in Brightspace where you submit programming assignments. There are more detailed instructions about completing the exam on the first page of the exam document.

Here is a link to today's video lecture.

Here is a link to today's video lecture.

Here is a link to today's video lecture.

Today we will look at renderer_4 which implements a simple anti-aliasing algorithm and renderer_5 which adds color to the renderer. Both of these features, like clipping, are an application of lerp.

This zip file now has some anti-aliasing pictures in it.

Here is a link to today's video lecture.

Exam 1 will be two weeks from today, on November 5. The exam will be about renderers 1 through 5. Here are several review problems. For many of these problems you will find the formula sheet that came with Homework 3 useful.

Today we will finish talking about clipping and lerp.

Here is a link to today's video lecture.

Today we will begin talking about the improved clipping algorithm in the third renderer.

Here is a link to today's video lecture.

See the homework assignment page for your third programming assignment.

Fall Break. No class.

Here is a link to today's video lecture.

Here is a link to today's video lecture.

I have added several more examples to the following zip files.

Thursday we will begin talking about the improved clipping algorithm in the next renderer.

Here is the picture that "explains" what a thread is (by comparison to what a process is).

Here is a link to today's video lecture.

Here is a link to today's video lecture.

More GUI references.

Here are some simple GUI example programs.

Here is a link to today's video lecture.

For next week, read

Here is a link to today's video lecture.

Thursday we will begin discussing the interactive event handling code in renderer_2. Here are a few references for Java's event handling system.

Here is a link to today's video lecture.

For next week, read the following sections from scratchapixel.com. They explain the two fundamental steps used in the rendering algorithms in the pipeline package of our renderer.

Here is a link to today's video lecture.

Today we will continue to step through the code in the simple_example folder in

Here is a link to today's video lecture.

See the homework assignment page for your second programming assignment.

Here are three demonstration programs of a computer graphics camera.

Here is a link to the example code about variable argument methods (using the Java Visualizer).

Here is a link to today's video lecture.

Today we will continue talking about the Scene data structure, we will introduce the Camera, and then begin talking about the rendering pipeline algorithms. The following zip file contains pictures that help explain these ideas.

Here is a link to today's video lecture.

Here is an interactive version of the renderer. We will use it for demonstrating ideas but we won't talk about how to make it interactive until the week after next.

Here is a link to today's video lecture.

For Thursday, read this overview of 3D rendering (from scratchapixel.com). It explains ideas in the scene package, which is the input data structure for our renderer.

Here is a link to today's video lecture.

Today we will use these pixel utilities,

to study the following pixel examples. Read the ReadMe.txt file in the following zip file and do the exercises described in it.

Here is a link to today's video lecture.

Be sure to look at the homework assignment page. Your first assignment is already listed there.

Watch this introductory video about rendering,

Read this introduction to computer graphics taken from this book,

Read Chapter 1 and Section 2.1 from this book (PDF version).

Here are a couple of small utilities that let us look at pixels on the computer screen.

We will discuss the code in this zip file (be sure to read the Readme.txt file from this zip file).

Here are interesting demonstrations of many computer graphics concepts.