Geometry
A module for the Undergraduate Courses in Geometric and Visual Computing offered by the College of Computing at Georgia Tech

Overall teaching objectives: Students must be familiar with the basic geometric primitives (points, directions, lines, circles, planes, triangles, tetrahedra, and sphere) and capable of inventing the simple geometric formulations and algorithms (construction, intersection) that are pervasive in computer graphics, modeling, animation, visualization and their various applications. Students must understand how to represent, apply, invert and combine simple transformations (rotations, trianslations) and how theses transformations correspond to changes of coordinate systems. They must also understand how such transformations are performed on the graphics hardware and how they may be invoked and used through contemporary graphics APIs.

Processing will be used to experiment with these concepts. It provides a simple to learn and to use software development environment for interactive 3D graphics in which students may explore these transformations through the design of scenes with patterns or animations of simple shapes.

Motivation and relation to other modules: Much of Computer Graphics, Computer Animation, and processing of scientific or medical data is about representing, rendering, and processing geometric models of 3D shapes. The most primitive building blocks for these representations are points, vectors, planes, lines, edges, triangles, tetrahedra and spheres. A variety of techniques for shape processing (such as ray-tracing, testing for intersections or collisions, measuring distances or discrepancy between shapes) require computing intersections between such simple geometric primitives.

What students should know:

  • The geometric intuition, use, and implementation of dot, cross, and mixed (determinant) products for testing/expressing orthogonality or co-planarity, for measuring areas of triangles or volumes of tetrahedra, for testing point-in-triangle and point-in-tetrahedron, and for computing reflection vectors.
  • Parametric or implicit rerpresentations of lines, please, edges, spheres using points, vectors, and dot-products.
  • How to implement algorithms for computing distances or intersections between these geometric shapes (edges, rays, triangles, spheres).
  • What is a local coordinate systerm with origin O and basis vectors I, J, K
  • How to compute O, I, J, K for simple translations and rotations.
  • How to compute the location P of a point given its coordinates (x,y,z) in a local coordinate system (O,I,J,K).
  • Given a point P, how to compute its coordinates (x,y,z) in a local coordinate system (O,I,J,K).
  • How to represent coordinate systems (or transformations) using a 4x4 matrix and how to apply them to points and vectors.

    Lecture slides: Jarek2D, Jarek3D,

    Images, videos:

    Web pages:

    Book chapters:

    Papers: Jarek,

    Examples of exam questions:
  • Provide the pseudocode for computing the intersection point X between edge (P,Q) and triangle (A,B,C) in three dimensions. Use points, vectors, and their operators, rather than coordinates. Define intermediate variables if helpful.
  • Provide the pseudocode for testing whether point P lies inside tetrahedron (A,B,C,D).
  • What is the center of mass of a triangular face with vertices A, B, C? What is the volume of tetrahedron (A,B,C,D)?
  • Explain how to test whether a ray from the viewpoint V through pixel P hits a sphere of center C and radius r. Explain how to compute the distance between V and the closest intersection.
  • Provide the pseudocode for an algorithm that will compute the minimum distance bwtween edge (A,B) and edge (C,D) in 3D.