When light (photons) from a point source off axis is reflected off of a cylinder, it forms a pattern called a caustic. We see this pattern more often than expected - for instance, at the bottom of coffee mugs and kitchen pots. I have taken a picture of a pan with some graph paper in the bottom, under a bright light:
(Click to enlarge) This photo has not been touched up, and the pattern is clearly visable.
The physical laws responsible for caustics are very simple - the angle of incidence equals the angle of reflection for light striking a surface. What is not so trivial is mathematically modeling the intersection of an arbitrary plane with photons coming from a point source at a given angle. It is relatively straight forward to parameterize the points themselves...
... and view their graph ...
... but computing an equation to describe the boundary is non-trivial. To explore what this boundary looks like under a variety of conditions, we use computer modeling software (3d rendering) to examine various conditions in an intuitive way.
The movie below demonstrates an optical caustic exhibited when light strikes a semi-circular reflective/refractive object. The movie is a sequence of 180 frames generated using the software POVRay, which has the ability to trace individual photons as they reflect off of objects. For each of these frames, approximately 1.5 million photons were generated, traced, and collected. These frames don't use the "ray-tracing" feature of POVRay, only the photons, thus the caustics produced are real and not simulated. The object is a hollow cylinder with outer radius 2 and inner radius 1.95. The front portion ( x > 0 ) of the difference between the inner and outer cylinders has been removed to better illustrate the caustic.
The animation represents a rotation of a spotlight located a fixed distance from the reflector (aka target). The spotlight traces a quarter-circle arc from 0 degrees (in line with plane) to 90 degrees (directly overhead). The equation giving the <x, y, z> location of the spotlight at any given frame is <cos( clock ), 0, sin( clock)> *10, where clock is radians from 0 to pi/2. since there are 180 frames, each frame is 1/2 of a degree. The distance (10) between the focal point and the spotlight is fixed throughout the animation.
This video is 1.1mb in size, and requires QuickTime in order to play. You can download the movie here. The POVRay scene I wrote that describes this animation can be found here. The command line used to generate the sequence from the file is:
povray +I c.pov +W640 +H480 +Q9 +KI0.0 +KF1.58 +KC +KFI1 +KFF180
which tells POVRay to render frames 1-180, using clock values from 0-1.58 (aprox. pi/2), at 640x480px resolution.
In the next experiment, I've increased the radius of the optical target to 4 and made it a closed cylinder. In the following movie, the light source is fixed in space (pi/3 radians off +x axis) while the height of the cylinder increases from 0.1 to 10 in 100 steps. Frame rate is 10 frames / second, so T=2 is height=2. The color of the light has been changed to blue, which allows much better observation of POVRays photon mapping behavior. The actual light color is RGB 0.5, 0.5, 10. Since POVRay maps only white photons, and only a small percentage of reflected photons are white, the overall caustic intensity is greatly reduced and the quality is increased without sacrificing accuracy. Ray-traced light appears blue in the rendered footage, while photon mapped light appears white. Note that the best cardioid approximation could be made at t=height=pi
This video is 729kb in size, and requires QuickTime in order to play. You can download the movie to your computer in mp4 format here.
The POVRay source for this file is called c2.pov. The command line used to generate this animation is:
povray +I c2.pov +W640 +H480 +Q9 +KI0.1 +KF10 +KC +KFI1 +KFF100