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

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.

See the homework assignment page for your fourth (and last) programming assignment.

Today we will look at how we implement and use matrices using Java.

Read the Readme.txt file for renderer_9.

Here is an outline of what we talked about today.

Here is an interesting online demo of 2D linear transformations,

that comes from this online graphics textbook.

Today we will go over Sections 1.1 - 2.3 (pages 1 - 19), about linear transformations, from the following reference.

Then we will start to look at the examples from the sub-folder renderer_9\basic_transformation_examples.

Today we will look at the view-rectangle/viewport code in several of the examples from the sub-folder renderer_7\clients_r7\aspect_ratio_examples.

We will look at the examples in the sub-folder renderer_7\clients_r7\aspect_ratio_examples.

Next week we will add matricies to the renderer. Read Sections 1.1 - 2.3 (pages 1 - 19), about linear transformations, from the following reference.

Here is the renderer that uses linear transformation matricies.

We will use this picture to explain how we can use the renderer API to match the aspect ratios of the camera's view-rectangle with the framebuffer's viewport.

Here is an outline of what we talked about today.

See the homework assignment page for your third programming assignment.

We will look at how the camera's view volume (and view rectangle) can be resized using a ComponentListener.

Here are several demonstrations of the perspective camera API.

Today we will look at examples from the watch-events folder.

Read the file Readme_event-driven-guis.txt in JavaGuiEvents.zip.

There is an interesting event on campus this Friday that you should consider atending. Please register for the even if you would like to attend.

Today we will look at examples from the event-experiments folder.

Read the file Readme_event-driven-guis.txt in JavaGuiEvents.zip.

The first midterm exam is today.

Next week we will start to look at examples of simple Java GUI events.

Remember that the first midterm exam is this Thursday. The exam is over renderer_1. See the review problems.

The first midterm exam will be one week from today. See the review problems from last week.

Today we will start to look at examples of simple Java GUI programs.

For next week, read the following sections about Java event handling.

No classes today. Fall break.

The first midterm exam will be two weeks from today, Thursday, October 17.

Here are some review problems for the midterm exam. The formula sheet will be included with the exam.

Today we will start to look at examples of simple Java GUI programs.

You can expeiment with the interactive clients included with this interactive version of the renderer.

See the homework assignment page for your second programming assignment.

Today we will finish the line rasterization and line clipping stage of the rendering pipeline.

Read the first two sections of this introductory chapter about Java GUIs.

Here are several other introductory chapters about Java GUIs.

Today we will continue to talk about line rasterization and line clipping.

Here is a link to an animation of pixel-plane vs. framebuffer while rasterizing. You need to step to the 14'th page of the presentation.

Here is a formula sheet that documents all the steps that a vertex goes through as it moves down the rendering pipeline, from a vertex in model coordinates to an index in the framebuffer's pixel-array.

Today we will finish talking about the projection stage and start to talk about line rasterization and line clipping.

Read the section about Rasterization and Clipping in Readme_r1.txt from renderer_1.zip.

Play with all these interactive line drawing demos or with this one.

We will continue to use the programs in the folder renderer_1\clients_r1\Position_Model_Vertex_LineSegment to analyze the Model2Camera and Projection stages of the renderer.

Here is a zip file containing several pictures (and a couple of programs) illustrating perspective and parallel projection.

Here are several online demonstration programs of projections and the computer graphics camera.

For next week, read the section about the viewport transformation and the pixel-plane in Readme_r1.txt from renderer_1.zip.

We will use the programs in the folder renderer_1\clients_r1\Position_Model_Vertex_LineSegment to understand the structure of our simplified rendering pipeline.

Remember to read the sections about Model2Camera and Projection in Readme_r1.txt from renderer_1.zip.

Today we will finish with the code in folder "renderer_1\clients_r1\simple_example\".

Next week we will start to talk about the rendering algorithms. Read the sections about Model2Camera and Projection in Readme_r1.txt from renderer_1.zip.

Today we will continue to look at the Scene data structure. In particular, we want to look carefully at the Model data structure. We will use at the code in the sub-folder "renderer_1\clients_r1\simple_example\".

Today we will start to look at the Scene data structure, which is the input data structure for the 3D renderer.

Remember to read the sections about the Scene, Camera, Model, and Position data structures in Readme_r1.txt from renderer_1.zip.

Read this overview of 3D rendering (from scratchapixel.com). It explains some of the ideas in the scene package.

Today we will look at a few image processing algorithms in the sub-folder pixel-algorithms from the following zip file.

Remember to read the sections about the Scene, Camera, Model, and Position data structures in Readme_r1.txt from renderer_1.zip.

Read this overview of 3D rendering (from scratchapixel.com). It explains some of the ideas in the scene package.

Today we will finish talking about the FrameBuffer and Viewport data structures. Then we will look at some very simple examples of "pixel algorithms" (image processing algorithms).

For next week, read the sections about the Scene, Camera, Model, and Position data structures in Readme_r1.txt from renderer_1.zip.

See the homework assignment page for your first programming assignment.

Today we will continue to talk about the FrameBuffer and Viewport data structures using the examples in the following folder. Read the ReadMe.txt file in that folder. Also read the sections about framebuffers and viewports in Readme_r1.txt from renderer_1.zip.

Today we will talk about the FrameBuffer data structure. We will use these pixel utilities,

to study the examples in the following zip file. Read ReadMe.txt from the zip file.

Here is an interactive version of the renderer. We will talk about it next week.

Watch Introduction to rendering, a video about rendering from Pixar In A Box.

Read Chapter 1, pages 1-16 from this book.

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

Read Chapter 1 from this book.

We will discuss the code in the following zip file. Read the text file called Readme_r1.txt, from this zip file, up to the section about the scene package.

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

Here are interesting demonstrations of many computer graphics concepts.

Here is the last renderer from the sequence of renderers used in this course.