Preparation for the midterm

Here is a list of the items you'll want to study up on for the midterm, which will be on Wednesday, March 24, during the regular class time. Everything on the midterm will be something we covered in class.

Then further down below is a preliminary description of the homework that will be due on Wednesday, March 31. If you like, you can hold off on working on that until after the midterm.

Topics to study up on for the midterm:

• Know the equations for intersecting a ray with a sphere
• Given the intersection of a ray with object A (represented as a sequence of line segments), and the intersection of the same ray ray with another object B, know how to find the intersection of the same ray with the shape (A intersect B).
• Be familiar with how the different parts of a 4x4 homogeneous transformation matrix work (eg: how do you make a translation, or rotation, or scale, or skew transformation)?
• Know what an orthonormal matrix is, and whether different kinds of matrix transformations are commutative. Understand how to combine transformation matrices by matrix multiplication.
• Be prepared to describe a vector representation of a simple three dimensional shape, such as a pyramid, cube, or prism, as a set of vertex coordinates and a set of edges (where each edge is just the index of a pair of vertices).
• Know how to find the the point in a plane where two given lines intersect, or the line in a plane that contains two given points.
• Know what the dual of a shape is.
• Know how to make a system that will allow a user to create simple polygons, drag them around on the screen, and delete them.

Initial description of the homework that will be due on Wednesday, March 31:

Your next homework will be to write a Java applet that implements a simple ray tracer to a flying saucer shape. In this homework you should take the code you wrote for ray tracing to the flying saucer, and apply that, pixel by pixel, to render an image of a flying saucer.

You will not yet need to create shading for the flying saucer. You will be doing that in a later assignment. Instead, for this assignment, you should assign a color to each pixel of:

• White if the ray hits the first sphere surface of the flying saucer
• Gray if the ray hits the second sphere surface of the flying saucer
• Black if the ray misses the flying saucer

You can paint a single pixel a color (eg: gray) by doing (for example):

```             g.setColor(Color.gray);
g.drawRect(x, y, 1, 1);
```