Skip to main content

A+ grade for C++ butterfly

The three streaks of light in the bottom left corner of the image are caustics that form when light passes through the rippled surface of the water.
The three streaks of light in the bottom left corner of the image are caustics that form when light passes through the rippled surface of the water.

To capture the reflections of a butterfly inside water drops, you need a high speed camera and luck. In the field of computer graphics, to get a similar image, you need thousands of lines of C++ code and a high speed processor. Using this second set of tools, Iman Sadeghi, a computer science Ph.D. candidate at the Jacobs School (http://graphics.ucsd.edu/~iman ), won the spring 2007 image rendering competition for CSE 168, Rendering Algorithms. The judges were impressed by Sadeghi's use of caustics, which can occur when light passes through a curved surface and then concentrates on other surfaces. The rings of light on the pebbles and bamboo beneath the water's surface are caustics that formed when light passed through the curved, rippled surface of the water. To calculate caustics, Sadeghi used the photon mapping algorithm invented by Henrik Wann Jensen, the computer science professor with the new model for rendering the appearance of milk (see page 9 in this issue) and Sadeghi's CSE 168 professor.

Print Article