Course objective To
provide the students with comprehensive introduction to CG, focusing
on the underlying theory and thus providing strong foundation for both
designers and users of graphics systems.
In class we will
study the theoretical foundations and algorithmic issues, in
programming assignments you will use OpenGL (Mesa) as the particular API for
writing graphics programs. We will not discuss programming in class!
You should be able to work on your own with the OpenGL primer or programming
This is a programming intensive course, but also involves study of math and algorithms.
There are programming assignments, a project, a midterm exam and a final exam.
Required: Edward Angel, Interactive Computer Graphics: a top down approach using OpenGL (5th ed., 2008), bundled with the OpnenGL Distilled (by Paul Martz, 2003), Addison Wesley
Dave Shreiner, Woo, Neider, and Tom Davis, OpenGL Programming Guide (7th ed.) Addison Wesley 2007. For this class an older addition is fine too
20% midterm exam
40% final project and exam
No late assignments/projects, unless prior arrangements have been made. Extensions are up to the discression of the instructor.
You must complete the project in order to receive a grade.
Complaints about grading must be submitted (together with the graded work) no later than a week from the date at which the graded work was returned to you.
I will assign a project. If you wish to do a different project, you must
submit a short proposal and it is up to me to approve it or not.
submit a one page proposal stating the objective of the project, what
exactly you plan to accomplish, and how. I need the proposals since I am concerned about the amount of effort a given project will require
(either too much or too little is unacceptable), and also about the
computer graphics contents of the project.
A typical project will consist of both a
program/demo and a (short) report.
You should use the extension .cpp if you are using the Unix makefile provided.
Otherwise save as your home compiler requires. Syntacticly, the program is written to comply with the ANSI C. (no // comments)
An interface and implementation of a vector class,
cs171CommonVec, for 3D vectors.
If you cannot understand this class, develop your own.
To have the proper environment variables, copy
|Compiling on Linux machines in 204 Adams
.cshrc file. To be able to recover if you need some settings from your old file, before you overwrite
.cshrc , save it under a different name.
Download again hello.cpp .
Use the following to
compile hello.cpp, create an object file hello.o, and then an executable hello:
g++ -o hello.o -I/usr/local/Mesa-6.5/include/GL -I/usr/local/Mesa-6.5/include/GL/glut -I/usr/include -c hello.cpp
g++ -o hello -O hello.o -L/usr/local/lib -L/usr/local/Messa-6.5/lib -lglut -L/usr/local/Messa-6.5/lib -lGLU -L/usr/local/Mesa-6.5/lib -lGL -L/usr/X11R6/lib -lX11
to run the executable hello.
to install GLUT and OpenGL on a PC
OpenGL and VC++ Project Settings. See
also the sites below.
|Working in Microsoft Windows
|Software and Online Resources
How to install GLUT and OpenGL on a PC
- Note that those who have 3ed of the textbook (Angel) have a CD with GLUT and Mesa.
- Mesa libraries (free software implementation of OpenGL)
Note: Install either the GLUT (if you have OpenGL) or Mesa3D libraries but not both.
- This is the home of OpenGL (documentation, tutorials, examples).
- This is complete set of man pages for OpenGL commands. It is
maintained by Sun Microsystems. Note that some of the features
described in these man pages are specific to Sun's implementation of
Any work you submit for grading must be your own. You should not copy from others, or give others sources to copy from. Do not copy programs
or parts of programs, or answers, from other students in the class, or
any other sources ("a friend", "a tutor", Internet, or other electronic
media, from books, notes, etc.). When you seek help or give help be
careful: you are allowed to talk about assignments, you are allowed to help
each other with compiling.
You should not work together with someone else
and "develop" a solution "together", on paper, or the computer, and then
each one types and submits the same solution (with some minor "cosmetic
changes")! You should not accept a solution that a "tutor" gives you.
You should not let someone else copy lines of code from you
(from your listing, or from the screen, or any other way).
It is very important that you come up with the solution on your
own, that you go by yourself through the pain of developing, writing
and testing a program! Only this way you will become an independent,
and capable of developing and writing software on your own, and ready to
continue successfully your study in computer science.
Cheating shall not be tolerated!
Be familiar with the Academic Honesty Code: FPS 11 and FPS 11G for handling violations of the academic honesty. Available online on Hofstra Web Site.
Hofstra University, Department of Computer Science
Gerda Kamberova, Last Update: 09/14/2006