My implementation of part 1 was developed in portable C++ and divided into two very distinct parts. The lower level half, "Blarg" is meant to be a generic toolkit of portable set of low-level routines for doing nearly any kind of 3D graphics. It's primarily a header style library modelled partly on the STL. As such, it already had classes for vector math, RGB colours, etc., which saved some time. There's not as much there as I'd like yet, so I had to augment it a bit for this assignment. For example, I ended up deciding to add a point class so that the C++ type checker could help find math errors. It also needed a raster image class. I chose to add a timer class as well. I expect that throughout this course, this toolkit will grow along with the ray-tracer and code may migrate to it from the ray tracer.
The second, more interesting half is the ray tracer itself, "Art". The initial version of art consists simply of a ray class and a throw-away sphere class along with the main function that pulls it all together to render the image:
All told, the rendering was quite rapid, as would be expected from such a simple program: on the order of a .015s when compiled with Visual Studio C++ with every optimization that I could find turned on.