### CSCI 4229 Course Materials for Spring 2003:

• General information and administrivia

• Information in obtaining and installing OpenGL on your machine

• The author's and publisher's webpages for the textbook, and its ftp site (look under pub/angel/BOOK) and erratum page. Here is the author's website.

• Official CSCI 4229 textbook bug report list . (See also the erratum page above.)

• Problem Set 1 . Be sure to read the newsgroup (cu.courses.csci4229, which lives on csnews.cs.colorado.edu) for hints, clarifications, errata, etc. Please post to that newsgroup if you have questions, find bugs, etc. Here is the grading scheme for this problem set.

• Problem Set 2 . You may do exercise 2.12 instead of 2.11 if you wish; the book didn't cover scan-line stuff in section 2.4, as advertised. Grading comments for both code and written problems were written on the pages that you turned in.

• For your ssh'ing pleasure, here are names of some of the linux boxes in the CSEL: lincoln, splashdance, nigel, khaya, eddyline, heritage, pyranha, oldtown, klepper, dimension, necky, seaward, kirton, pygmy, dagger. Note that OpenGL won't work remotely unless the remote machine also has it (or Mesa) installed.

• Problem Set 3 . Here is the grading scheme for this problem set, as well as two instances of very nicely written student code by Scott Hassett and by B.J. Williams .

• Problem Set 4 . Here is the grading scheme for this problem set.

• Problem Set 5 . NOTE: because I did not get as far as I had expected in class, you need not do the cross product part of problem 0(a), or problems 0(b-e). Here are solutions to the rest of problem 0(a) in postscript and pdf. glutTimerFunc(rate, fcn, 0) calls fcn after a delay of rate, passing 0 to it as an argument. rate is an unsigned int, and the last argument is an int. Here's the associated manpage from opengl.org. Also, you are allowed to use glRotate in the rotating_square problem, as I uploaded the wrong version and confused everyone. Here is the grading scheme for this problem set.

• Problem Set 6 . Here is the grading scheme for this problem set. Here are solutions to the written problem in postscript and pdf.

• Problem Set 7 . Problem 1 (the coordinate-change one) is optional. Here is the grading scheme for this problem set.

• Problem Set 8 . The point in problem 1 should have a 1, not a 0, in its fourth entry. Here are solutions to the written problem in postscript and pdf. Here is the grading scheme for this problem set. Note: many PS8s got lost in the email ether. If this happened to you, please email us another copy.

• Problem Set 9. I've just uploaded a new version of shaded3Dscene.cxx that (I think) fixes all the problems we encountered in class. You're welcome to change the glOrtho to glFrustum if the projection stuff is confusing you (i.e., the glOrtho weirdness that you discovered in class several weeks ago). For the roll/pitch/yaw problem, you may want to define and use a coordinate system involving three vectors: one from the camera position to the lookat point, one pointing out the top of the camera (viewup), and a third that is the cross-product of the other two (which should point out the camera's ear). I will accept late submissions of PS9 (one point off per day) until 5pm friday 4 April. Here is the grading scheme for this problem set.

• Problem Set 10. Here is the grading scheme for this problem set.

• Problem Set 11 in postscript. pdf. Here's a nice solution to some of the in-class stuff, courtesy of Phillip and (I think) Jeremy. Extension to friday requested and granted for whole class -3:30pm tues Here are thetextbook's Ch6 solutions.

• QUIZ II: I had them graded but forgot to bring them. You can pick them up from me tomorrow or thursday if you wish. Sorry! Matt Iyer and James Smagala got 50s this time, and the average was much higher. Good job, all.

• Problem Set 12 has two parts. The first is due tuesday 22 April in class, which will be held in the BP visualization center (see April 22 links below for directions etc.). The second is due by email to csci4229@cs.colorado.edu by 5pm on friday 25 April.

• Part I: your task in this problem will be to dig through a CAVE program -- a 3D paint tool -- and figure it out well enough to make simple modifications (e.g., changing the brush shape).

I've set up some four-person groups for this exercise, since we won't have time for everyone to cycle through the driver's seat. I suggest that you all look over the code and docs, trade some email, and then get your group together (maybe right before class?) to think about how to effect the solution. On tuesday night, after the presentation/demo, I'll randomly choose a couple of groups to try out their solutions on the real hardware. If you don't know each others' email addresses, you can use the CU directory to get them.

The main website you'll need is the CAVEPaint site. The general CAVElib site describes the CAVE API, which is a GLUT-like API for immersive VR. Jon Marbach (who will be doing the demo) has written a CAVE simulator called KNAVELib, based on GLUT, which you can use if you want to test your code out at home before trying it out in the real CAVE.

Here are the modifications that you should think about:

• There's a fourth button on the wand. Use it to do something interesting (e.g., change the brush shape, switch to a "line mode" and draw connected lines, implement a "ribbon mode," draw in a "spray paint" mode where points are scattered around the wand position, ...)
• Attitude painting: use the orientation of the head (or wand) to do something interesting (e.g., have the wand orientation affect the brush shape, and/or have the head orientation affect shape/color, ...)

• Part II: discrete techniques. Reverting to ppm, as described on handout; the jpeg stuff doesn't work right on CSEL machines.. Here's the handout, in postscript and pdf. Here's a newer version of ppmdisplay.c if you have trouble getting it to read files other than the robot.ppm image that came with the text distrib.

Note: At least one person is having trouble with cubetex.c freezing the CSEL machines. It works fine on my machine, and there's nothing strange in the code, so I can't figure this out.

If you figure out how to fix this, please email me ASAP, and also post the solution to the newsgroup. Sharon got cubetex.c to work by ssh'ing into another machine and working from there. Neither she nor I have any idea why this is true. If you have trouble with ssh, here's the FAQ.

• Problem Set 13 in postscript and pdf. Mandatory written part due friday; optional coding part due monday. See handout for details.

• Makeup Exam will be held at 5pm on friday 2 May in ECCR 110 (not 100 -- typo). It is technically illegal to give any kind of test during finals period unless it is a final, so "quiz III" has now become an optional final exam. Grading policies remain the same: whatever score you get on this exam will replace the lowest of your problem set grades (providing that it is better).

• GRADES please check the posted grades and email me ASAP if things still aren't right. I have to file grades by noon on 5/7.

#### Material for in-class problems:

• 14 January: a tarball containing a mostly debugged version of the code on the CD-ROM that came with the textbook, along with a Makefile that has all the right flags and includes and libraries to get it to compile and run under Mesa 3.4 on the CSEL linux boxes.
• 21 January: Sierpinski gasket code.
• 28 January: interactive Sierpinski gasket code.
• 4 February: pick.c code.
• 11 February: line.c (for explorations of logical drawing modes) and rotating_square.c (for trig and timer function explorations).
• 18 February: playing with Damon and Dan's NPRQuake (no code to download; CSEL machines aren't anywhere near fast enough to run it).
• 25 February: superellipse.cxx code and James and Edith's magic Makefile for it (which gets rid of all of gcc's complaints by removing lots of flags and options...go figure...)
• 4 March: transformations.cxx code. You can modify the magic Makefile listed above in order to compile this.
• 11 March: OpenGL code (3Dscene.cxx) that renders a 3D scene and another version that renders the same scene, but with light, shading, and hidden surface removal: shaded3Dscene.cxx. As before, you can modify the magic Makefile listed above in order to compile this.
• 8 April: a a room to wander around in (and solution to PS9). Here's a better version (and a solution to part of the in-class problem)
• 15 April: no in-class; scrabbling madly to cover all of Ch 7...
• 22 April: class will be held in the BP Visualization Center CAVE. Meet there at 5pm!. Click here for directions and a map. Please also see the links under PS12, above, for an assignment that you'll need to do before this class. The BP Viz Center is on the Stampede bus route from CU. The parking lots there do not require permits after 5pm on weekdays.
• 29 April: none.