Erector Set Crane.txt
by
Mark Vernon
mvernon@metronet.com


     This 640 X 480 32-bit rendering of a Crane made from 
erector set parts was created using POV 2.2 on a Mac II ci 
with an Applied Engineering Transwarp 40 MHz 68040 
Accelerator and 20 Mb Ram.  All calculations and coding were 
done by hand. 

     In trying to come up with an image for the January 
competition, a friend suggested doing something with an 
erector set.  This sounded great but I wasn't sure if I could 
render the girder, pulleys, brackets, support members, 
screws, nuts, ..etc. necessary to build an object, but I 
could feel 'the challenge'. I picked up the gauntlet and 
tried to create a girder. Having accomplished that, I was off 
and shortly after that, the idea of a crane hit me. 

     Since this is, for all practical purposes, my first 
full-fledged rendering from start to finish, I must say that 
I learned a lot about memory and time efficient coding while 
doing this. I initially used a hand made bi-cubic patch for 
the rib on each side of the girder, but found out quickly how 
memory hungry bi-cubic patches are. I realized that I could 
difference a slightly smaller cylinder from a bigger cylinder 
(creating a hollow pipe) and then clip 1/2 of it to produce 
the same rib that the bi-cubic patch had. It reduced my 
memory by over 1/3 and significantly sped up the trace time. 

    Unfortunately it still grew to where 20 MB of ram was not 
enough. I rewrote the girder code so that instead of creating 
a box with a hole differenced out and then instantiating that 
many times with an offset, I created 1 long box and 
differenced out all of the holes as one, then added the side 
ribs as long ones rather than short ones on each instantiated 
piece. This reduced my memory requirement by almost 6 MB.  
Another trick that was recommended by a friend is when you 
need to difference out a round hole, use a cylinder rather 
than a sphere because a cylinder's radius is defined as the 
squareroot of the sum of the squares of 2 dimensions and a 
sphere is of 3 dimensions.  This saves on additional math and 
rendering time.

     I think that during the coarse of this project, I have 
now read 'Ray Tracing Creations' (by Drew Wells and Chris 
Young) as well as the POV docs all the way through several 
times.

     I have included the scene files. Any recommendations or 
constructive criticisms for memory (it takes about 14Mb to 
render) and coding efficiency would be welcome.

Enjoy!

Mark Vernon

PS.  Thanks to Andy Cooper for the erector set idea, John 
Pingel for the math lesson and the POV team for making a 
great raytracer.