The course webpage contains the syllabus and course materials, and it also links to and past tripos questions, the exercise sheet and additional material well worth exploring.

Please hand in work at least 24 hours before the supervision, either by email or on paper via the post box outside Student Administration in the William Gates Building.

First Supervision — 2D Graphics [60]

  1. Warmups.
    1. What is “BitBlT”? When and why is it used? [2]
    2. On paper run Bresenham’s algorithm (slide 30) for the line running from (0,0) to (5,3). [4]
    3. Describe how to modify the previous algorithm to draw a straight line using only integer arithmetic. [4]
    4. Describe an algorithm to fill a triangle. Show that it works using the triangle with vertices (0,0), (5,3) and (2,5). [4]
    5. Prove that the Bernstein polynomials sum to 1 (for any n). [2]
    6. Explain how to derive a sequence of transformations to perform a 2D rotation about an arbitrary point. [2]
  2. Provide a pseudo-code implementation of the mid-point circle drawing algorithm. [6]
  3. Describe an algorithm which clips an arbitrary polygon against an arbitrary convex polygon. [6]
  4. 1999 Paper 4 Question 10 First Part [8]
  5. 2004 Paper 5 Question 5 Part (b) [6]
  6. 2005 Paper 5 Question 5 [6, 3, 4, 3]

Second Supervision — 3D Graphics [60]

  1. Warmups.
    1. Describe what is meant by object coordinates, world coordinates, viewing coordinates and screen coordinates. [4]
    2. Illustrate the difference between orthographic and perspective projection. [2]
    3. We use a lot of triangles to approximate stuff in computer graphics. Why are they good? Why are they bad? Can you think of any alternatives? [4]
    4. For a cylinder of radius 2, with endpoints (1,2,3) and (2,4,5), show how to calculate the smallest axis-aligned bounding box and bounding sphere. [4]
    5. Break down the following 2D lines into a BSP-tree, splitting them if necessary. (0,0)→(2,2), (3,4)→(1,3), (1,0)→(–3,1), (0,3)→(3,3) and (2,0)→(2,1) [4]
    6. Describe a method for generating triangles from a sphere. [2]
    7. Find out about the bidirectional reflectance distribution function (BRDF), briefly describe it and explain how it improves on the diffuse+specular+ambient model. [2]
  2. 2004 Paper 3 Question 8 [10]
  3. 1999 Paper 4 Question 10 Second Part [8]
  4. 2005 Paper 6 Question 6 [20]

Third Supervision — Background [60]

  1. Warmups.
    1. Suppose you are designing a user interface for someone who is colour blind.
      Describe how some user interface of your choice should be suitably modified. [2]
    2. Why is it better to look at stars and comets slightly off-centre rather than looking
      directly at them? [2]
    3. Explain how the human eye can adapt to a dynamic range in excess of 107:1 despite being limited to an instantaneous dynamic range of around 100:1. [2]
    4. Calculate the maximum resolution needed by a smartphone. Clearly state any assumptions that you make. [4]
    5. What is the point of double buffering and how does it work? [4]
    6. Explain how either a plasma display, a LCD, a CRT or a DMD-based projector works. [4]
    7. Explain how either laser printing, inkjet printing, solid ink printing, dye-sublimation printing or offset printing works. [4]
  2. For each of the CIE XYZ, CIE L*a*b*, RGB, CMY and HSV colour spaces
    1. describe what the coordinates represent [2 each]
    2. describe why the coordinate system is a useful representation of colour. [1 each]
  3. 2006 Paper 6 Question 5 Part (a) [6]
  4. 2007 Paper 3 Question 5 Part (b) [9]
  5. 2008 Paper 3 Question 4 Part (b) [4]
  6. 2009 Paper 4 Question 6 Part (b) [4]

Fourth Supervision — Image Processing [60]

  1. Warmups.
    1. What do we need texture interpolation for? [2]
    2. Briefly describe nearest-neighbour, bilinear, bicubic and trilinear texture interpolation. [4]
    3. Explain how bump mapping works, plus one major advantage and disadvantage of it. [4]
    4. Design a 3×3 convolution kernel that sharpens an image. [Hint: Look up “unsharp masking” and express this using convolution.] [4]
    5. Propose point processing functions for image inversion, histogram stretching, intensity thresholding, and gamma correction. [4]
    6. Compare and contrast the GIF and JPEG image formats. [6]
  2. 2006 Paper 6 Question 5 Parts (b) and (c) [14]
  3. 1997 Paper 6 Question 4 Last three parts [12]
  4. 2007 Paper 3 Question 5 Part (a) [10]