  An invisibility device should guide light around an object as if nothing were
there, regardless where the light comes from. Ideal invisibility devices are
impossible due to the wave nature of light. This paper develops a general
recipe for the design of media that create perfect invisibility within the
accuracy of geometrical optics. Here the imperfections of invisibility can be
made arbitrarily small to hide objects that are much larger than the
wavelength. Using modern metamaterials, practical demonstrations of such
devices seem possible. The method developed here can be also applied to escape
from detection by other forms of waves such as sound.
