CS 494/594
Computer Graphics

 

Fall 2009
Tue/Thu 8:10am
Claxton 205
Dr. David C. Banks
TA: A. Skinner
askinne2@utk.edu
M 10-12, W 11-2
Claxton 109A

 

 

Grading
Topics
Academic honesty

 
 
12/08 Tue Final Exam 8am
12/02 Wed Class Over
11/26 Thu Thanksgiving
Homework 09 Nov 18 23:59
Homework 08 Nov 04 23:59
Octahedron
10/27 Tue Midterm Exam, Ch 1-6, 14, lectures through 10/20
10/15 Thu Fall Break
10/11 IEEE VisWeek
Homework 07 Oct 21 23:59
Homework 06 Oct 07 23:59
Homework 05 Sep 30 23:59
Homework 04 Sep 23 23:59
Lecture 05
Homework 03 Sep 16 23:59
Lecture 04
Lecture 03
Homework 02 Sep 09 23:59
Homework 01 Sep 02 23:59
Lecture 01
Homework 00 Aug 26 23:59 pgm.tgz tarball
 

The accounts for CS 494/594 are ready for pickup in Claxton 106

Textbook: Fundamentals of Computer Graphics, 3rd Ed. (P Shirley et al)

 

This course is concerned with algorithms for creating 2D images of objects in 3-dimensional space. To make objects that look real, one simulates the way light is emitted and then reflects from objects. The result is sampled and reconstructed on a rectangular grid of color pixels.

Students who took this course have gone to work at film studios (Pixar, Rhythm and Hues), game companies (ESPN Games, Naughty Dog, Infinite Games), research labs (NASA, Army CEWES, ORNL, Lockheed-Martin), and technology companies (Apple, Intel, Nvidia, Microsoft).

 

Computer graphics at other places

Pixar
Stanford
MIT Media Lab
Caltech
UNC Chapel Hill

 
This course is about how to develop good software for computer graphics. But it is fun to experiment with writing really incomprehensible code. Here's a graphics program I wrote to show that 4 lines of C-code can transform, illuminate, and z-buffer a torus.

Save this code as as torus.c, then type (in a UNIX shell) cc torus.c -o torus -lm. Run it in a terminal window.

char G[]="^<VL8CO! ",C[80][80],*P,k,j;double sin(),cos(),c,x,z,L,M,N,i,I=.01;
main(){for(;i<629;){N=sin(i*I);c=cos(i*I);M=sin(i);L=cos(i+=I);x=c+3;z=3*M*x+
60-N;if(z>*(P=&C[k=z+5*N][j=40+x*L*9])){*P=z;c*=L+M-N/c;P[-3200]=G[k=c<0?0:
c*5];}}for(P=*C;P<=C[40];)putchar((P++-*C)%80?*P+32:10);}
  

It was submitted to the Obfuscated C Contest.

For a minimal ray tracer, see Paul Heckbert's example.