COMP 365: computer graphics
[Spring 2009]

Computer Graphics is a vast discipline within computer science. It is also somewhat involved as it incorporates elements of data structures and algorithms as well as necessitating a good knowledge of mathematics and geometry. Although many students wish to jump straight to making animated movies, this course takes a different approach. In order to be a good computer graphics programmer, one must understand the underlying techniques, and not just call various functions and hope for the best. This course combines theory and practice; class time is split between covering the basics of various techniques along with some of the associated mathematics, and covering the more immediately practical use of OpenGL, the computer graphics API. Students will write several large programs to put theory into practice.

Syllabus(in pdf)

Assignment G6

Linux Resources

  • Getting Started with Linux - probably the best place to start.
  • Ultimate Guide On Linux for Beginners - useful info, but some broken links.
  • List of Linux HowTo's - good, if you know what you're looking for!
  • Don't like Linux/Unix? Go here.
  • Handouts/In-Class Examples

    • Marvin.bmp - output from the Roland PIX-30 3D scanner.
    • project3 - sample G3 executable showing various order piecewise splines. Note: to run this after you have downloaded it, you have to make it executable by: chmod +x project3
    • g3.in - sample input file for the above.
    • windows.cpp - windows/viewports example.
    • helloclass.cc - first practice program that draws a couple of polygons
    • circle.cc - sample program showing how to draw circles with OpenGL.
    • mouse.cc - program showing how to draw points and polylines with the mouse, version 1.
    • mouse2.cc - program showing how to draw points and polylines with the mouse, version 2. The difference is that all of the points/vertices are stored, allowing the window to be redrawn whenever necessary.
    • menu.cc - teeny program showing the use of a OpenGL pop-up menu.
    • text.c - program showing some text output options.
    • perspect1.cc - an example in the use of perspective. See the comments within the program that explain the use of glFrustum() and gluLookAt ().
    • perspect2.cc - a more involved example in the use of perspective and other features, such as moving the camera position, wire-frame vs. solid objects, depth testing, and fog.
    • myanimate.cc - a small example showing the basics of animation using a double-buffer.
    • natelight.c - demo program showing the use of OpenGL lighting functions.
    • shadingTex.csLab - executable (!) for Ubuntu in the csLab of the Dr Pepper bottles demo, showing the use of lighting and flat vs. smooth shading. Note: You may have to make this file executable after you copy it by: chmod +x shadingTex.csLab
    • mytexture.cc - demo program showing the use of OpenGL texture functions.
      • CelebDM.ppm - texture image for above program.
      • glh.h - header file needed for above program.
      • glh.c - implementation code for above header file.
    Computer Graphics Resources

  • Tutors.tar.gz - a suite of tutoring programs written in C with OpenGL showing things such as the effect of transformations, the use of frustum() (projections), and how to do texture mapping. Note this file must first be unzipped by use of "gunzip".
  • Capone - screen shot of the projection tutor, starring Al Capone.
  • Demos.tar.gz - a set of demo programs written in C. Each program demonstrates a different OpenGL/computer graphics feature. Note: Some of the programs may be a little buggy.
  • Brown Exploratories - Java applets that show some computer graphics concepts dynamically. Examples include color, texture mapping, and lighting/shading. These are useful for understanding the theory behind a topic before trying to write a program.
  • Code Samples - code samples from the OpenGL Programming Guide.
  • OpenGL - Home page for OpenGL, containing FAQs and searchable documentation for all your coding needs.
  • Color Finder - a little Java applet that lets you choose a color in Hexadecimal.
  • Color Picker - another page devoted to choosing colors in Hex.
  • Brownian motion - an animation of Brownian motion showing molecules in a gas.
  • Fractals - an introductory lesson. Shows the classic Koch Curve and the Sierpinski Triangle. The site also has a discussion of L-Systems, part of project G4.
  • Fun Fractals - shows images you can create starting with a fractal.
  • Mandelbrot Fractal - Java applet in which one can zoom in/out of a Mandelbrot fractal.
  • OpenGL Programming Guide - online version of the THE OpenGL book (v 1.1).
  • Drawing Geometric Objects in OpenGL
  • Pixar - see some clips of cutting edge CG.
  • Last updated