Design Choices

After a whole lot of frustration with trying to get netpbm to work, I finally used nrrd to generate my png files (much easier!).
I created two classes to represent Points and Vectors so that there would be no possible confusion over which one was being used and so that only valid math operations could be applied to Points and Vectors.
The image viewer was created using openGL and glut, which means it's slow. Later on I hope to figure out ways to speed it up, but I guess once my ray tracer starts doing bigger badder things it won't really matter since the ray tracer's slow speed will dwarf any openGL issues (I hope/think?). The progressive display works by casting a ray for every kth pixel, where k is choosable from a glut menu. Once one iteration of rays for the image has been cast, I update the image in OpenGL and then go on to get the next set of pixels. Thus I essentially draw the image to OpenGL k times (if I did it per pixel it would be slooow).

Images!

The final output

Progressive rendering at time x

Progressive rendering at time x+y

Image Viewer with menu options