Penrose's solution to the illumination problem
Channel: Nils Berglund
Date: 16/09/2021

This one has been requested by many viewers quite a while ago, so I'm happy I finally got around to making it. The illumination problem asks the following question: assume you have a room with mirrored walls. Is it always possible to place a light source in such a way that no dark corners remain in the room? Of course, the room has to be "in one piece" (connected, as we say in mathematics): it should not consist of several separate rooms. 
The problem was formulated by Ernst Straus in the 1950s, and first solved by Roger Penrose in 1958. He constructed a room that cannot be illuminated completely, wherever you put the light source. The room is constructed with two half-ellipses connected by straight parts, in the middle of which one puts two mushroom-shaped protuberances. The rounded parts of the mushrooms are also half-ellipses, whose vertices are placed at the focal points of the large half-ellipses.
The solution works in the approximation of geometric optics, meaning that light travels in straight lines. This simulation shows what happens for "real" waves, which have a non-zero wavelength. Such waves experience diffraction around obstacles, allowing them to move partly around corners. One thus cannot expect Penrose's solution to work perfectly in this case. Still, the simulation shows that when the wave starts in the center of the room, very little of it reaches the parts behind the "mushrooms". We will test other starting points in forthcoming simulations. 
The colors indicate the energy of the wave: blue means low energy, red means high energy. 

Render time: 40 minutes

Music: "Images of Tomorrow" by the Unicorn Heads@UnicornHeads

For more on the illumination problem, see https://en.wikipedia.org/wiki/Illumination_problem
Popularization (in French): https://images.math.cnrs.fr/Les-champignons-de-Penrose
See also https://images.math.cnrs.fr/Des-ondes-dans-mon-billard-partie-I.html for more explanations (in French) on  a few previous simulations of wave equations. 

The simulation solves the wave equation by discretization. The algorithm is adapted from the paper https://hplgit.github.io/fdm-book/doc/pub/wave/pdf/wave-4print.pdf 
C code: https://github.com/nilsberglund-orleans/YouTube-simulations
https://www.idpoisson.fr/berglund/software.html 
Many thanks to my colleague Marco Mancini for helping me to accelerate my code!