POV-Ray is short for "Persistence of Vision - Raytracer" because that's what it is. It uses raytracing to create a realistically-lighted scene. There are three required parts of each pov-ray scene: a camera, a light source, and an object. Just like OpenGL, objects can be rotated, translated, and scaled.
I drew a baseball player using common POV-Ray objects. The head (and eyes and nose on it), body, and baseball are all spheres that have undergone the possible transformations. The arms are together formed by a single torus, and the bat attached to the arms is a union of a cone and a deformed sphere. The legs were trickier: I made each leg separately by taking the difference of a torus and two spheres, which left the leg and two parts of spheres, then took the intersection of that and the original torus, leaving what can be seen now as a single leg. I repeated for the other leg. Finally, the home plate is represented by two boxes, rotated and translated to together look like a pentagon.
My program used an additional feature the clock variable. I used it specifically to control the position and rotation of the arms, bat, and ball, to create a scene in which an imaginary batter at the plate hits an incoming baseball while the camera rotates around the batter. The source can be found here, and screen shots are below.
![]() |
![]() |
![]() |
![]() |
There's also an animation, if you really want to wait for it to load. It's 1294148 bytes, but that means 135 frames worth of smoothly-animated baseball action. You can find that image here. Or, if you have slightly less patience and want to see a faster-but-slightly-roughter animation, click here. This one is only 266425 bytes.
As you can imagine, generating so may POV-Ray frames on one machine can be very time-consuming, so I used The Cluster. The shell script I used for each individual image can be viewed here, or if you prefer you can see my code for the cluster program.