(:nogroup:)

# Final exam assists:

## The exam

1. Wed 12/12 3-6 pm in JEC5119
2. Allowed: books, xeroxes, notes, papers
3. Not allowed: computers, calculators, communication devices, sharing with other students during the exam
4. The exam

## Open hours before final exam

1. Mon 12/10: Jon will be in JEC6204 from 3 to 6 pm.
2. Tues 12/11: WRF will be in JEC3205 from 4 to 5.
3. Wed 12/12: Jon will be in JEC6204 from 11am to 2pm.

## Old exams

(:showhide div=syl init=hide lshow='Show Syllabus' :)

# Syllabus

ECSE-4750 Computer Graphics

Electrical, Computer, and Systems Engineering Dept.

Rensselaer Polytechnic Institute

Troy NY 12180 USA

Fall 2007

## Updated Catalog Description

ECSE-4750 Computer Graphics

Introduction to Interactive Computer Graphics, with an emphasis on applications programming. Objects and viewers, and the synthetic camera model. Graphics architectures, the graphics pipeline, clipping, rasterization, and programmable shaders. Input and interaction. Geometric objects, homogeneous coordinates, and transformations. Viewing, hidden surface removal, frame and depth buffers, compositing, and anti-aliasing. Shading, light and materials, texture mapping, ray tracing, and radiosity. Intellectual property concerns. Extensive programming with the OpenGL API and C++. Prerequisite: ECSE-2610 or equivalent. Fall term annually. 3 credit hours

## Course Objectives

1. to learn the principles and commonly used techniques of computer graphics
2. to develop a facility with the relevant mathematics
3. to gain an introductory proficiency with OpenGL, one of the most widely used APIs.

## Why Take This Course?

1. Graphics is fun. It's got a history, since it is a takeoff from geometry, which is at least 2500 years old. There are pretty pictures involved. It's based on state-of-the-art hardware.
2. It has applications, and is tied into the real world, and is not just theoretical.
3. Nevertheless, it's not just practical stuff with no depth, but has some theory and math also.
4. It teaches practical knowledge, e.g., OpenGL that can lead directly to a job.

## Why Not To Take This Course

1. You don't like programming.
2. You don't like documenting your programs.
3. You don't like math.
5. You don't like writing exams at the official scheduled times.

## Prerequisites

This is a senior CSYS course, and assumes a moderate computer maturity, represented in the catalog by ECSE-2610 (Computer Components & Operations). You should know some HW, but if you don't have that specific course, don't worry.

Since there is programming in C or C++, you also must know some high level language, which you can translate into a knowledge of some C. If you don't know what a pointer is, then drop this course and take Computing Languages first. A good review book on C is Kelley & Pohl, A Book on C.

Computer Graphics also assumes that you know, or be able to learn, some basic linear algebra, up to the level of what an eigenvalue is.

If you're uncertain about taking this course, then, by all means, talk to me, or to previous people in it. If there is one specific fact that is unfamiliar, such as eigenvalue, then there's no problem at all.

## Professor

W. Randolph Franklin. BSc (Toronto), AM, PhD (Harvard)

I've been doing graphics related programming since the 1960s, and have been teaching versions of this course since 1982. I've been at RPI since 1978, apart from several absences, including a year at Berkeley, 3 months at Genoa, and shorter times at Laval University in Quebec City, the Commonwealth Scientific and Industrial Research Organization in Canberra, and the National University of Singapore. I also spent 2 years 7 months as Director of the Numeric, Symbolic, and Geometric Computation Program at the [[http://www.nsf.gov/|National Science Foundation]], recommending how to spend your tax dollars (thanks!).

My current research on representing terrain, is largely supported by the Defense Science Office of the Defense Advanced Research Projects Agency. DARPA people are crazy. My main worry is that I'm not crazy enough for them.

Office
Jonsson Engineering Center (JEC) 6026
Phone
(518) 276-6077
Email
wrfATecseDOTrpiDOTedu, making the obvious substitutions.
Web
http://www.ecse.rpi.edu/Homepages/wrf/
Office hours
after each lecture. Usually I stay as long as anyone wants to talk.
Preferred communication medium
email

## Course Homepage

### Textbooks

As listed on the RPI Bookstore site:

 ECSE - 4750 - 01 - TROY
COMPUTER GRAPHICS
INTERACTIVE COMPUTER GRAPHICS...OPENGL
9780321321374
Author: ANGEL 	Edition: 4TH
Pub: AW 	Req / Opt: R
New Price: $106.25 Used Price:$79.75

ECSE - 4750 - 01 - TROY
COMPUTER GRAPHICS
OPENGL SUPER BIBLE WCD
0-321-49882-8
Author: WRIGHT 	Edition: 4TH
Pub: PH 	Req / Opt: O
New Price: $59.99 Used Price:$45.00


Angel's web site for his text is here.

There are also several other good OpenGL books, if you have the money. One good (and cheap) one is:

OpenGL : A Primer (2nd Edition) (Paperback) by Edward Angel.

### My Notes on Various Graphics Topics

I've prepared web notes on some topics that I think I describe better than the text. They'll be linked from the appropriate lecture.

### Assorted online material

There is a lot of good, free, online material about OpenGL and graphics in general. I'll mention some of it; Google can find more.

### Class-Only Online Material

Material that for copyright reasons is restricted to the class is here. Log in with user name 4750. I will announce the password in class.

## Computer Systems Used

You may use any system that works for you, and that can do the work. My examples will generally be in Linux.

## Times & Places

### Lectures

Mon & Thurs, 2-3:20pm, in Sage 3510. The SIS CRN is 80747.

Attendance is not taken. However, I may base an exam question on a student question in class. Also, students may be expected to present some topics in class.

There is plenty of space for new students to enroll.

### Labs

Wed 2-3:50 in Low 3051.

There will be no scheduled labs at first. I may use the time to make up missed classes.

### Components

#### Midterm Exam

There will be a midterm exam in class as listed in the calendar. You may bring in any printed material, but no computers. No collaboration or communication (except with the staff) is allowed.

The exam may contain some recycled homework questions.

#### Homeworks

There will be a homework approximately every week. You may do it in teams of 2.

#### Term Project

A term project will be due. You may do it in teams of up to 3 people. You will implement, demonstrate, and document something related to Computer Graphics. You will present a 15 minute talk on your project TA in one of the last two classes.

#### Final Exam

There will be a final exam on a date set by the Registrar. You may bring in any printed material, but no computers. You may not share the material with each other during the exam. No collaboration or communication (except with the staff) is allowed. The final exam will contain material from the whole course, but more from the last half.

### Weights and Cutoffs

ComponentWeight
All the homeworks together25%
Midterm exam25%
Term project25%
Final exam25%

Even if the homeworks be out of different numbers of points, they will be normalized so that each homework has the same weight.

>=90.0%A
>=75.0%B
>=60.0%C
>=50.0%D
>=0%F

### Missing or Late Work

We will drop the lowest homework grade. That will handle excused absences, unexcused absences, dying relatives, illnesses, team trips, and other problems. Unless otherwise stated, the homeworks will be due on paper in the lecture. Late homeworks will not be accepted.

If you miss the final exam because of an excused absence, you may demonstrate your knowledge of the 2nd half of the course at an individual oral makeup exam.

If your term project is late, you will be offered an incomplete and the project will be graded in Jan 2008.

Whenever there is a new grade, we'll email the class.

When we return a graded homework or exam to you, please report any errors within one week.

It is not allowed to wait until the end of the semester, and then go back 4 months to try to find extra points. It is especially not allowed to wait until the end of the following semester, and then to try this. (Yes, someone tried this last year.)

## Honesty Policy

You may collaborate on homeworks, but each team of 1 or 2 people must write up the solution separately using their own words. We willingly give hints to anyone who asks.

The penalty for two teams handing in identical work is a zero for both.

You may get help from anyone for the term project. You may build on a previous project, either your own or someone else's. However you must describe and acknowledge any other work you use, and have the other person's permission, which may be implicit. E.g., my web site gives a blanket permission to other people to use it for nonprofit research or teaching. You must add something creative to the previous work.

The penalty for plagiarism is a zero grade.

You must not communicate with other people or machines or use electronic aids like computers and PDAs during exams. That includes not exchanging books and notes during the exam. You may use as many paper books and notes as you can carry, wheel, or drag into the room.

The penalty is a zero grade on the exam.

Also, all cheating will be reported to the Dean of Students Office.

The penalty for handing in the answer for a slightly different question that was on last year's homework or exam, because you copied but didn't even see that the question was different this time, is a zero and our scornful laughter.

Ditto for writing an exam answer that was more appropriate for the version of the exam handed out to other people in the room.

(:showhide div=syl:)

(:showhide div=ann init=show lshow='Show Announcements' :)

# Announcements

 Date Event Sep 4 Jon Muckell assigned as TA. His email is . He will hold office hours in the scheduled lab session. Sep 10 The simple.c program that I discussed in class today needs one more line to run. It's glutInit(&argc,argv); in main. I've added it and called the new file simple2.c . Sep 10 In order to cover more material, for awhile we'll have lectures also in the labs, on Wed, starting this Wed, Sep 12. Sep 12 Homework 2 is online. Sep 20 Homework 3 is online. Sep 24 To compile the OpenGL examples in Visual C: If you get a redefinition error for exit, then do not include stdlib.h in your program. It is already included by another include file, and it lacks an inclusion guard. Thanks to Julio. Oct 4 Homework 5 is online. Oct 4 Final exam is set for Wed Dec 12 at 3-6 pm. Please tell me if you have a conflict (and what that conflict is). Oct 10 Homework3Solution.doc and Homework4Solution.doc are online. Oct 24 Summer Opportunity - SIGGRAPH Student Volunteer is the biggest Computer Graphics conference. In 2008, it's Aug 11 to 15 in Los Angeles. Everyone who likes graphics should see it once. Student interns can see it cheap. If you work halftime then admission and a place to stay are free, and they might also pay for transportation. Hard deadline: Feb 24. I strongly recommend this opportunity. Oct 24 Term project details and Homework 6 online. Nov 14 It's time to get those project proposals (and even first progress reports) in. Nov 14 Would anyone be interested in spending a few weeks in Brazil learning to collaborate on research with Brazilian colleagues? This question is to gauge student interest, as I'm considering writing an NSF proposal. Nov 28 All the Wed Dec 5 slots for presenting term projects are full, so any one who did not sign up is assigned to Monday Dec 3.

(:showhide div=ann:)

(:showhide div=exams init=hide lshow='Show Exams' :)

# Exams

I've moved dates about homeworks, labs and lectures to their sections. This avoids redundancy.

 Date Event Oct 11 Midterm F2007 MidtermSolution.doc Scatterplot of Midterm Grade vs Finish Order Oct 19 last day to drop classes Dec 12 final exam, 3-6 pm.

(:showhide div=tp init=hide lshow='Show Term Project' :)

# Term Project

## Details

1. For the latter part of the course, most of your homework time will be spent on a term project.
2. You may do it in teams of up to 3 people. A team of 3 people would be expected to do twice as much work as 1 person.
3. You may combine this with work for another course, provided that both courses know about this and agree. I always agree.
4. You may build on existing work, either your own or others'. You have to say what's new, and have the right to use the other work. E.g., using any GPLed code or any code on my website is automatically allowable.
5. You will implement, demonstrate, produce a video on, and document something vaguely related to Computer Graphics.
6. You will sign up later on Google calendar to demo it in one of the last few classes.

## Schedule

1. Nov 1: title, team members, 100 word summary.
2. Nov 15: brief progress report.
3. Nov 29: brief progress report.
4. Dec 3 or 5: 10 minute talk in class. There will be a signup sheet; sign up early to get your first choice.
5. Dec 6: final project report including code, video, documentation.

## Deliverables

1. An implementation showing dynamic interactive or 3D graphics.
2. A video showing it running.
3. An implementation manual showing major design decisions.
4. A 10 minute talk in class.

## Ideas

Anything vaguely related to Computer Graphics is ok.

1. A tutorial program to demo some idea in this course, such as quaternions, which I might use in future years.
2. A 3D game.
3. A psychophysics experiment to test how well users can match colors.
4. A physical simulation of 3 body orbits.
5. A 3D fractal or julia set generator.
6. An L-systems generator for random plants (as in botany).
7. Get an idea from Pittsburgh's CS 1566: Introduction to Computer Graphics Class Project Repository

(:showhide div=hw init=hide lshow='Show Homeworks' :)

# Homeworks

There will be about a dozen homeworks.

 Due Questions Solution Sep 6 Homework 1 Homework1Solution.pdf Sep 20 Homework 2 Homework2Solution.doc Sep 27 Homework 3 Homework3Solution.doc Oct 4 Homework 4 Homework4Solution.doc Oct 11 Homework 5 Wed Oct 31 Homework 6

(:showhide init=hide div=lec1 lshow='Show Aug and Sept Lectures and Labs' lhide='Hide Aug and Sept Lectures and Labs' :) (:showhide init=hide div=lec2 lshow='Show Oct Lectures and Labs' lhide='Hide Oct Lectures and Labs' :) (:showhide init=show div=lec3 lshow='Show Nov-Dec Lectures and Labs' lhide='Hide Nov-Dec Lectures and Labs' :)

I'll write a one sentence summary of each lecture, after the class.

 No Date Summary 1 Mon Aug 27 Intro by Prof Nagy Wed Aug 29 no class Thu Aug 30 no class 2 Thu Sep 6 Engineering Grounded In Reality Angel powerpoint lecture slide set 1. I'll give the password in class. A little on API philosophy, e.g, PortabilityAndStandards, and submarine patents. Angel powerpoint lecture slide set 2. 3 Mon Sep 10 Angel powerpoint lecture slide set 3 Models and Architectures Angel powerpoint lecture slide set 4 Programming with OpenGL, Part 1: Background. First program: simple.c 4 Wed Sep 12 Reading up to now: Angel chapter 1. OpenGLSummary Angel powerpoint lecture slide set 5 Programming with OpenGL Part 2: Complete Programs Demo, discuss, and modify shape_test.c 5 Thu Sep 13 Angel powerpoint lecture slide set 6 Programming with OpenGL Part 3: Three Dimensions Demo, discuss, and modify gasket2.c Demo, discuss, and modify gasket3.c Angel powerpoint lecture slide set 7 Input and Interaction logical input devices X window input, client-server model. (In X, the client is the machine where the processing is done; the server displays the graphics.) callbacks, incl idle callback request vs event mode post redisplay - use this when you've changed something and so the system has to update the display. double buffering 6 Mon Sep 17 single_double.c. Shows: The difference between single and double buffering. Creating two graphics windows in one program. Note the order: Set the display mode. Create the window. Register the callbacks. Repeat for each window. Call MainLoop. Mouse input. Changing the idle callback. The new one replaces the previous one. (This answers a question in class a few days ago.) getinfo.c. Shows how to read information about the OpenGL version and how to get internal state variables. This shows just a sample; there are more. showinput.c. Shows how to get input. This also shows the coordinate system used to report mouse events. Units are pixels.  (0,0) ...... (xmax,0) .... .... .... (0,ymax).....(xmax,ymax) Angel powerpoint lecture slide set 8 more on callbacks 7 Wed Sep 19 Here are refs answering a question asked after Monday's class on how to avoid tearing caused by swapping the foreground and background buffers in the middle of refreshing the image and the two buffers have different images. One solution is to wait until the vertical retrace to swap the buffers. However, if each buffer takes about 1/60 second to recompute, sometimes more and other times less, then the refresh rate will fluctuate between 1/60 and 2/60 second. Another solution is to use 3 buffers. You display from the 1st, have the 2nd ready to swap with the 1st in the next vertical retrace, and meanwhile compute into the 3rd. This uses 50% more memory. How to fight tearing OpenGL Extension WGL_I3D_swap_frame_lock Smooth Gaming with Triple Buffering square2.c. Demonstrates glutMotionFunc callback. Change glutMotionFunc to glutPassiveMotionFunc to see what happens. manywindows.c. Shows that many top level windows (a new one with each left mouse click) can be dynamically created. paint.c, a simple paint program showing hierarchical menus. Note that is is still using immediate mode graphics; redrawing erases everything. 8 Thu Sep 20 paintxor.c modified by paint.c to write triangles into the color buffer in XOR mode. Everything else is still written in COPY mode. XOR mode is useful for cursors and rubberbanding because XORing the same object twice restores the original buffer. Angel powerpoint lecture slide set 9 Better interactive programs Angel powerpoint lecture slide set 10 Geometry 9 Mon Sep 25 I will present transformations 3 different ways to help you understand this important topic. Angel powerpoint lecture slide set 11 Representation Angel powerpoint lecture slide set 12 Transformations My note on homogeneous coordinates and projections demoed by Albrecht Durer (The following display better in Firefox than Internet Explorer.) Homogeneous matrix examples, p' = M p for Translate by (1,2,3): {$M = \left(\begin{array}{cccc} 1 & 0 & 0 & 1\\ 0 & 1 & 0 & 2\\ 0 & 0 & 1 & 3\\ 0 & 0 & 0 & 1\end{array} \right)$} . This also works: {$M = \left(\begin{array}{cccc} 2 & 0 & 0 & 2 \\ 0 & 2 & 0 & 4 \\ 0 & 0 & 2 & 6 \\ 0 & 0 & 0 & 2 \end{array} \right)$} Rotate around Z axis by an angle whose cosine is 0.6: {$$M = \left(\begin{array}{cccc} .6 & -.8 & 0 & 0 \\ .8 & .6 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{array} \right)$$} 10 Wed Sep 27 My note on 3D rotation all rigid transformations in 3D that don't move the origin have a line of fixed points, i.e., an axis, that they rotate around. deriving the vector formula for a rotation given the axis and angle computing the matrix from a rotation axis and angle testing whether a matrix is a rotation if it is, then finding the axis and angle Bill Jacobs' OpenGL video tutorial - excellent 11 Thu Sep 28 Rotations continued Angel powerpoint lecture slide set 13 OpenGL Transformations

(:showhide div=lec1 lshow='Show Aug and Sept Lectures and Labs' lhide='Hide Aug and Sept Lectures and Labs' :)

No Date Summary
Mon Oct 1 no class; prof presenting research results at NGA and DARPA
12 Wed Oct 3

Jon Muckell presents OpenDX, an open source visualization software package based on IBM's Visualization Data Explorer.

# IBMs Data Explorer - OpenDX tutorial

## OpenDX vs OpenGL

OpenGL - fast, portable, close to hardware, event-driven

OpenDX - specifically for data visualization, data should be computed before using openDX. Many default parameters and abstraction allows the user to quickly visualize the data.

## Installing OpenDX

The simplest way to install OpenDX is to use YaST or some automated installation tool that will install from an RPM. Installing from source can be unusually tricky.

If you are running Windows you need to have Cygwin installed

### Installing on SUSE 10 Linux

1. Open YaST and then Installation Source
1. Then open Software Management and search for dx and install all appropriate items
2. The install is successful if you can type dx in the terminal and openDX runs

## How To Make a Simple Picture in OpenDX

I'm going to walk you through an example I made of visualizing two protein chains. First you'll need to download my example Protein.tar.gz containing the following files.

• Protein.net - This is the actual OpenDX file
• protein_e.general - This is the header information for file 1acb_e.out
• 1acb_e.out - This is the actual data being fed in

protein_i.general and lacb_i.out is the data relating to the other protein chain, we don't have to worry about that for now.

### The Header File - protein_e.general

First open up the following two files protein_e.general and lacb_e.out

protein_e.general is the header file for lacb_e.out and contains the following information.

file = lacb_e.out #Where Data Explorer finds the actual data (consisting of points)
points = 649 #How many points are contained in each series (For this example - How many lines of our data do we want to read in)
series = 1 #We have only one set of points
field = locations #What do we want to call the variable we read in (our variable contains an x,y & z because its a 3-vector, see structure
structure = 3-vector #Each position is made up of 3 variables, so its type is a 3-vector
layout = 1,6 #At each line, for each x,y and z we skip 1 character/byte and read in 6
header = 0 #Do not skip any lines before we start reading points
interleaving = field

### The Data - lacb_e.out

18.252 4.407 16.785
18.524 4.005 18.191
19.961 4.353 18.422
. . . . .
Total of 649 points

Note OpenDX skips one character and then reads in 6, as described in layout in the header file. Therefore there is two spaces between 18.252 and 4.407, and there is only one space between 4.407 and 16.785

### Running The Program

1. To run the program you'll need to first change the import path. Double click on one of the Import palettes. Change the path /home/muckellj/Documents/DX/DATA/protein_i.general to your appropriate path. Repeat for the second Import palette.
2. Under the Execute Tab click Execute Once
3. If you have done this correctly you should see an image of one red and one blue protein chain.

### Palette Description

A palette only has an effect on the program if there is a path from the palette to the image(or display) palette.

• IMPORT: This palette reads in from the header file (typically a .general file), and imports the data into the program. We require two imports for this program because we are reading in from two different data files, one for each chain. To display only one protein chain, simply disconnect one of the wires leading to COLLECT.
• GLYPH: This palette has the effect of creating each of the different spheres. If you double click on one of the glyphs, you'll notice that the type is "sphere" this can be changed to numerous other geometric types. If you click Expand and look at the other values you can set, you'll notice that both min and max are set to the same value. This is because we want all the sizes of the spheres to be the same size.
• COLOR: Colors each sphere
• COLLECT: Puts the two chains together to be used as a single image
• IMAGE: Displays the image

### How To Make a Animation in OpenDX

The file animates two protein chains with the camera moving around the objects. ProteinAnimate.tar.gz

The program is the same as the one above except we added a few more palettes. We needs to use the DISPLAY palette so we can specify where we want the camera to be positioned. We then use the ReadImageWindow palette to read the display window and then output that result to the image palette. The final result needs to reach the image palette because that allows us to save the final frames.

SEQUENCER: This is a crucial palette for creating animations because it allows us to increment numbers. For example, in this program the sequencer increments from 0 to 360 which relates to the current rotation of the protein chains for each of the 361 frames.

1. Under the Execute tab click Execute on Change
2. In the Image window click on the Execute tab and the click on Sequencer.
3. Click the forward Arrows to change between frames
4. To save the frames, under the Image window goto Save Image. We want to have the Format as type MIFF and we want Continuous Saving.
5. Incriminate the Sequencer with the Continuous Saving applied. SaveAnimation.tiff
6. We will use image magick to convert the miff file into an mpeg using the command convert ProteinRotate.miff ProteinRotate.mpeg. NOTE you probably will need to add this file to your bin - mpeg2encode
7. Run your mpeg - I use MPlayer mplayer ProteinRotate.mpeg

Here is the animation: ProteinRotate.mpeg

### Resources

13 Thu Oct 4
1. Review rotations, including the example just added to My note on 3D rotation.
2. Read relevant parts of Angel, chapter 4.
3. My note on 4D rotation. In 4D, there is no fixed axis, but there is either a fixed plane or no fixed point except the origin.
4. Quaternions. Refs:
1. my paper paper
2. Angel, page 224ff.
3. Quaternion Examples
4. Sample exam question:
What rotation does this quaternion represent: {$q = 0.707 + 0.707 j$}
Answer: a {$90^\circ$} rotation about the axis {$(0,1,0)$}
5. Angel powerpoint lecture slide set 14 Building Models
This section tells how to draw polyhedra more easily than with many glVertex calls. You can load the vertices into an array and then do a lot with one hi-level call. This may be more efficient and also reduces programming errors.
Mon Oct 8 no class; Columbus Day
14 Tues Oct 9
1. Demonstrate 3D rotations in Maple using Gfiles:rot_maple.code
2. Review slide set 14.

Zero or more of the following:

1. Angel powerpoint lecture slide set 15 Classical Viewing
The fine distinctions in classical viewing are not relevant to this course.
2. Angel powerpoint lecture slide set 16 Computer Viewing - 1st pass
15 Wed Oct 10

Review for midterm

Here is some material to help you study for the midterm. This year's topics may be slightly different, but will be mostly the same. Since there are a finite number of electrons in the universe and they say that recycling is good, I'll recycle many of these questions.

Notes:

1. normalizing a vector: divide all components by the vector's length, to make its length 1.
2. questions from F2006 not on tomorrow's exam: 4, 9, 11, 13, 15, 19
3. questions from S2005 not on tomorrow's exam: 4, 12, 22
4. homogeneous matrix to scale by 5:
{$\left(\begin{array}{cccc}5&0&0&0\\0&5&0&0\\0&0&5&0\\0&0&0&1\end{array}\right)$}
16 Thu Oct 11

Midterm F2007. You may bring any printed, copied, or written material, but no computers or calculators.

17 Mon Oct 15

To unwind from the midterm, Jon Muckell will let you play with test the Bluetooth Laser Virtual Keyboard while I'm in St Louis.

17 Wed Oct 17

Today's big idea is the view normalization transformation. Routines like gluLookAt and gluPerspective really create a viewing transformation matrix so that the original scene when viewed with your desired parameters gives the same image and the transformed image seen with a standard projection and clip volume.

See the OpenGL Reference Manual on viewing.

1. Angel powerpoint lecture slide set 16 Computer Viewing - 2nd pass
2. Angel powerpoint lecture slide set 17 Projection Matrices
18 Thu Oct 18

Today we switch to a completely different topic.

1. Angel powerpoint lecture slide set 18 Shading I
2. Angel powerpoint lecture slide set 19 Shading II
19 Mon Oct 22
1. I attempted to email to each student our view of your grades. If you didn't receive this, or there was an error, please tell Jon and me, and sorry about the error.
2. Note this excellent talk The Art and Science of Computer Graphics by Don House today at 4 in JEC3117:
http://www.cs.rpi.edu/news/colloquia/October22_2007.html
3. Angel powerpoint lecture slide set 20 Shading in OpenGL
20 Wed Oct 24
1. Computer graphics in the real world
1. Forma Urbis Romae - reconstruction of a street map of 211AD Rome from 1186 pieces like this one:
2. Another OpenGL tutorial The Practical Physicist's OpenGL tutorial Edward S. Boyden
3. Note on GL_MODELVIEW vs GL_PROJECTION.
4. Look at demo programs used for Homework 6.
5. Term project details
6. Angel powerpoint:
We now change from learning the API to studying how things are implemented under the API.
1. Angel powerpoint lecture slide set 21 Implementation I - Rasterization, Clipping
21 Thu Oct 25
1. Angel powerpoint:
1. Angel powerpoint lecture slide set 22 Implementation II - Clipping, Visibility
2. Angel powerpoint lecture slide set 23 Implementation III
22 Mon Oct 29

1. You always have to use the detailed clipping since sometimes the CS algorithm reports that it doesn't know.
2. However often it can classify the line segment (or the box with everything inside) as either completely in or else completely out.
3. In that case, the rest of the pipeline is faster.
4. However you have to write more lines of code.
5. You don't have to know how this works, only what its purpose is.

Bresenham presents the fast line and circle drawing algorithms better than the text.

23 Wed Oct 31

(:showhide div=lec2 lshow='Show Oct Lectures and Labs' lhide='Hide Oct Lectures and Labs' :)

(:showhide div=lec3 lshow='Show Nov-Dec Lectures and Labs' lhide='Hide Nov-Dec Lectures and Labs' :)

Angel powerpoint slide directory