FresnelZonePlate.frink

// Uses Frink's ability to render accurately-sized graphics to draw Fresnel// zone plates. You can print these out accurately on a laser printer with// transparencies. A Fresnel Zone plate is almost like a printable lens.// it takes advantage of quantum diffraction of light to focus light onto// a target. They are freaking awesome.//// The main limitation of creating your own zone plates is that you have to// be able to print at very high resolution to be able to focus visible light// with a short focal length.//// http://zoneplate.lbl.gov/theory// http://en.wikipedia.org/wiki/Zone_plate

// Draw a (printable, exactly-scaled) zone plate.// * f is the focal length,// * lambda is the target wavelength of light you want to focus// * phase is 0 or 1. If phase=0, the center will be clear. If phase=1,// the center will be dark. Surprisingly, both will focus the light at// the geometric center of the target, even if the center is geometrically// in shadow!// * r is the radius of the zone plate to be drawn.// * res is the limiting resolution of your printer. (This is at best half// the actual resolution of your printer.) This affects the "max effective// zones" that your printer can meaningfully render.
drawZonePlate[f=27 feet, lambda=700 nm, phase=0, r=3 in, res=600/in] :=
{
g = new graphics