Modified version of Java translation of code from Raytracing From the Ground Up (http://www.raytracegroundup.com/)