Math 155B - Introduction to Computer Graphics
Winter 2004, Course Web page
Instructor: Sam Buss,  Univ. of California, San Diego


Overview: This is the second of two courses providing an introduction to 3D computer graphics, including both using OpenGL and the theory of computer graphics.   Topics for Math 155B include:  Bezier curves, B-splines, 3D Studio Max, Ray Tracing, Radiosity, Intersection testing, Quaternions, Inverse Kinematics.   
    Prerequisites: Programming experience in C or C++ or Java is acceptable.  Experience in any of these languages will be enough for you to pick up the C++ needed for some of the programming assignments.   CSE 167 (Fall 2003) and Math 20F (Linear Algebra), or consent of the instructor, are also required.

Grading: Grading will be based on both programming assignments and on a midterm and a final exam.  It is expected that your course grade will depend about 50% on your programming projects and 50% on your written exam work.   It is not yet decided whether quizzes and written homework assignments will be collected and graded.  Grading of projects will be individualized and one-on-one.
    There will be about 5 or 6 programming assignments, culminating with an individual final project.  You are expected to do your own programming and will not work in teams (except for limited exceptions in the case of the final project). 

Sam Buss, Professor of Mathematics and Computer Science
    Email:  (this is usually the best way to contact me).
    Office: APM 6210.   Office phone: 534-6455.
    Office hours:  Monday and Friday 11:00-11:50, Wednesday 10:00-10:50.
            I have a PC in my office and can help with programming assignments there.
    Please phone, email, or just stop by for appointments at other times.

Teaching Assistants:  All TA office hours will probably be held in APM B337/B349 PC lab.
    Peter Schwer:   
        Office hours: In APM B337/B349 PC lab: Monday and Wednesday 2:30-3:30 and Friday 10:00-11:00.

Rooms and Times:
    Lectures: MWF, 1:00-1:50, Warren Lecture Hall 2112.
    PC lab: APM B337, B349, and APM 2444 are all available.

Textbook:  (Required) S. Buss, 3D Computer Graphics: A Mathematical Introduction with OpenGL.  Cambridge Univ. Press, 2003.  This book has just appeared and is by your instructor.  So this class will be "breaking it in": in particular, please let me know if you find typographical mistakes or other errors.  THERE ARE $1 REWARDS FOR THE FIRST FINDER OF EACH ERROR!   Book web site:
    (Recommended) M. Woo et al., OpenGL Programming Guide, 3rd or 4th Edition. Addison-Wesley, 1999.  The first or especially the second edition is also fine for the purposes of this course.  See also below for the older editions available online for free.

Programming projects:  Projects must be your own individual work.  Although you are allowed to seek help from others, you should be sure that you design and write your own code.  If you receive substantial help from fellow students or from any outside source, you must disclose this at the time your project is being graded.  Violations of academic integrity will be treated seriously, and may result in referral to a Dean.  

        Project #1:  Due date (for being graded!  Work should be done earlier.):  Friday, January 23.  Introduction to 3D Studio Max.

        Project #2:  Due date (for completion of work): Midnight, Tuesday, January 27.   Create Catmull-Rom and Overhauser interpolating spline curves.    

        Project #3:  Due date (for completion of work): Midnight, Friday, February 6.  Model a teapot-like object with rational Bezier patches.

        Project #4:  Due date (for completion of work): Midnight, Tuesday, February 24.     Create degree three B-spline interpolating curves.

        Project #5:  Due date, Wednesday, March 3rd.  Mini(?)-project: Get the RayTrace software working, and make a small scene of your own.      

        Final Project: TBA.  Implement some advanced ray tracing techniques on at the high level of the RayTrace software.

Quizes (if any!):  Will be only a small part of the final grade.  About 3-5%.  But a great way to preview problems before the midterm and final.  Quizzes will be held in the last 15 minutes of lecture.  Topics and dates will be pre-announced.

Homework assignments:
Due Monday, February 9.

    Midterm date and topics.  Answers available in postscript and PDF format.
        Friday, February 20.  50 minutes exam, in class.
        Midterm review session: AMP 5829, Thursday 3:00-4:00.
        Topics: Bezier curves and B-spline curves.
        No notes or text.  I will give you a sheet of formulas.  (See handout for the list of these.)  You may use calculators (but probably should not).
        Handout: Midterm topic list.

    Final exam: Finals week.  Topics: The final exam will last 90 minutes and will be cumulative.  Topics will include Bezier curves, B-splines, ray tracing, radiosity, optionally Euler angles and quaternions.

Lecture Topics & Readings in the Textbook:
Monday Wednesday Friday
Week 1

Bezier curves - Sec VII.1 

DeCasteljau algorithm, Subdivision.
VII.2, VII.3, VII.4..
Catmull-Rom, Overhauser, OpenGL cmds
VII.15.1, VII15.2, VII.11.1.
Week 2 3D Studio Max - in PC lab
Start Project #1
no class no class
Week 3 M. L. King Holiday, no class Degree k curves, Derivatives, Degree Elevation,
Properties.   VII.6 and VII.9.
Bezier patches, partial derivatives
Week 4 Rational Bezier curves, Circular sections,
Surfaces of revolution. VII.13 and VII.14.
Teapot.  B-splines.
VII.14, and VIII.1.
Blending function, nonuniform knots,
Cox-de Boor.   VIII.1 and VIII.2.
Week 5 Cox-de Boor examples. Uniform knots,
Bezier curses as B-splines. VIII.2-VIII.4.
Properties, Knot insertion
Degree raising, Circles.  VIII.4, and VIII.8-10.
De Boor algorithm. Derivatives of B-splines.
VII.5 and VII.7
Week 6 B-spline interpolation.
B-spline interp.  Intro to ray tracing.
VIII.13 and IX.1
Reflection and transmission, Basic Ray Tracing.
Week 7 Presidents' Day, no class Intro. to ray tracing.
Midterm exam
Week 8 Distributed ray tracing. Antialiasing, jittering,
motion blur, depth of field, soft shadows.  IX.1, IX.2
Combining techniques. Illumination maps.
Photon maps. IX.2.
Introduction to the RayTrace software
Appendix B.
Week 9 Special effects without ray tracing.
IX.2, IX.3.
Radiosity, Form factors
XI,1, XI.2.
Calculation of visibility factor, Matrix equations
XI.2, XI.3
Week 10 Algorithms for radiosity equations.  Orientations,
Yaw, pitch roll.     XI.3.2-4 and XII.3
Euler angles, Quaternions.
Quaternions.  Slerping.

1. How to start a new Visual C++ Project.

    2. How to calculate Nj,4(ui).
    3. Midterm handout.
    4. How to jitter eye positions with the RayTrace software.


Advertisements:  Various people ask to address the class with recruitments, job opportunities, etc.  I generally say no, but let them advertise down here.