Course Web Page - Math 155A - Introduction
to Computer Graphics
Spring 2005 -
Instructor: Sam Buss - Univ. of California, San Diego
Overview: This course is an
introduction to 3D computer graphics,
including both the use of OpenGL programming and the mathematical theory
of computer graphics. Topics will include OpenGL drawing
primitives, 3D transformations including affine transformations, projection and
perspective,
Phong lighting, averaging and interpolation, texture mapping, light
and color, and Bezier curves.
The course will cover both the mathematical theory of
graphics and the practical uses of OpenGL and GLUT. OpenGL and GLUT is a
cross platform API that works on most common computer environments, including
Windows, Macintosh, Unix, Linux.
Prerequisites: Programming experience in C or C++ or Java is
acceptable. Math 20F (Linear Algebra) is required.
Instructor:
Sam Buss. Professor of Mathematics and Computer Science
Email: sbuss@ucsd.edu
(this is usually the best way to contact me).
Office: APM 6210. Office phone: 534-6455.
Office hours: I have a PC in my office and
can help with programming assignments and do grading there.
Monday:
11:00-11:50
Wednesday:
12:00-12:50. Except Wed. April 27th and Wed, May 11: 3:10-4:00 instead.
Friday:
10:00-10:50.
Teaching assistant.
Jefferson Ng. Email:
jwng@cs.ucsd.edu.
Office hours: Held in the APM B337/349 lab.
Hours: Tuesday. 2:00-4:00.
Wednesday 3:30-5:30.
Thursday 2:00-4:00.
Textbook: (Required) S. Buss, 3D
Computer Graphics: A Mathematical Introduction with OpenGL. Cambridge
Univ. Press, 2003. This book is by your instructor.
So please let me know if you
find typographical mistakes or other errors --- I am paying cash money for any
new mistakes found in the book. Book web site:
http://math.ucsd.edu/~sbuss/MathCG.
(Recommended) M. Woo et al., OpenGL Programming Guide,
4th Edition. Addison-Wesley, 1999. You will not need any of the
advanced features described in the fourth edition, so the first or especially the second
or third edition is also fine for the purposes of this course. The first
edition is available online for free, see below for the URL.
The Visual C++.NET help system also describes the basic
OpenGL commands, but not the GLUT commands. GLUT documentation is
available online, see below for the URL.
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. There will be a limited number of
written homework assignments and in-class quizzes; grading policies for homework
and quizzes will be announced.
There will be about 5-7 programming assignments, culminating
with an individual final project. You are expected to do your own
programming and will not work in teams.
Grading of projects will be
individualized and one-on-one.
Programming assignments must work on the PC lab
computers for grading purposes. If you do your assignment at home, you must port
it to the class PC lab computer so that it will run there under Visual C++.
(And, you must do this by the due date of the assignment.)
Rooms and Times:
Lectures: Monday, Wednesday, Friday 2:00-2:50. WLH
2114..
PC labs: APM B337/B349 (two numbers for
the same room) is the main lab, and where TA's hold office hours. The
computers in the back of the room are faster than the ones in the front.
Please do not use the computers for non-class items if other students need them
for class work. You should respect the use of the lab by other
classes. Door code: 1435620.
(This door code is for use only by students of this class. Please make note of it, it will
not stay on the web page very long.)
Programming rojects:
Project #0: Due date: Monday,
April 4th.
Project #1: Octohedron
project. Due Wednesday, April 13.
Project #2: Solar
system project. Due Wednesday, April 20.
Project #3: Wire frame
scene with "sombrero" and initial. Due Wednesday, May 4.
Project #4: Scene with
material and lighting. Due Wednesday, May 11.
Final Project:
Independent project. Due Tuesday, May 31.
Homework assignments
Homework #1. Octahedron
written homework. Due Wednesday, April 13.
Homework #2. Linear
transformations. Due Wednesday, April 20.
Homework #3.
Interpolation. Due Monday, May 23.
Midterm: There will be one midterm during a regularly schedule class period. Tentative Date: Friday, May 6.
Final exam: At the date and time as scheduled by the registrar. Will be cumulative. More information will be posted near the end of the quarter.
Email announcements: Will be sent to your email address as maintained by studentlink. You should check your email on a regular basis.
Resources:
The official web site for OpenGL is http://www.opengl.org/. The most useful part is probably the tutorials which can be found by clicking on "Coding Resources" in the top row of buttons.
The textbook's web site at http://math.ucsd.edu/~sbuss/MathCG has a number of sample OpenGL programs illustrating basic features and usages of OpenGL.
GLUT 3.7: The GLUT libraries provide an
accessible set of routines for using the OpenGL API. All of the Math 155 /
CSE 167
homework projects will use GLUT. The necessary GLUT files are already
installed on the PC lab computers, but they are also available for download from the web.
If you are using a PC at home, you may need to download the GLUT .h, .dll and
.lib files. The GLUT
homepage is at
http://www.xmission.com/~nate/glut.html or at
http://www.sgi.com/software/opengl/glut.html. The first site has exactly
what you need for Math 155AB / CSE 167 and is more up-to-date. The second site is somewhat
more comprehensive however.
Documentation for the GLUT API is available in
HTML,
Postscript
and PDF
formats. This documentation may not include all the features of GLUT:
advanced features can be understood by examining the source code for GLUT.
Older editions of the OpenGL programming guide are available online for free!!! You can find the first edition at http://fly.cc.fer.hr/~unreal/theredbook/, as well as many other locations. The second edition has been posted online in the past, but its location seems to change frequently and this year I could not find it on google. (Perhaps it is not actually permitted to post it online? Please let me know if you find it at a legitimate online location.)
If you have compile time problems with Visual Studio.Net and the "exit( )" prototype in glut.h, I have created an updated copy of glut.h that may fix your problem. You may download it from the textbook's web page with sample OpenGL programs, http://math.ucsd.edu/~sbuss/MathCG/OpenGLsoft, (the link is near the bottom of the page).
Thanks to Jefferson Ng for this: He is
using gcc on a Macintosh and the following command line invokes the gcc
compiler for him:
gcc
-framework OpenGL -framework GLUT -framework Foundation Solar.c
Thanks to Justin Nemeth for finding this item. If you are using an older version of Visual Studio.NET the .NET 2003 solution and project files will not work for. You can always manually rebuild the project, and this is not very difficult for the simple projects for the class this fall. However, if you prefer, there is a utility Visual Studio Converter 2.0 available at http://www.codeproject.com/macro/vsconvert.asp that will automatically convert .NET 2003 files to older versions of .NET. I have not tried this out myself, so please let me know if you have problems with it.