๐ฆ Fraunhofer diffraction
๐ฏ Proving the wave-like nature of light using physical optics visualization
๐ฏ Demonstration of rendering a scalar grid/intensity field
๐ง Simulation inspired by this video by Jordan Huang
๐ A VPython demo is available as well, see circular_aperture.py
๐ Related to fourier transformation
Below youโll find a diffraction pattern of an aperture (circular or rectangular) far away from a screen, also known as Fraunhofer diffraction. The intensity is calculated as the square of the amplitude of the electric field.
Live demo
Section titled โLive demoโInstructions given in the video
Section titled โInstructions given in the videoโSince the original video is in Chinese, you can find a copy of the original set of instructions that accompany the video below.
Extracting results in
For a small aperture we have , so we can write
I. Original homework assignment
Section titled โI. Original homework assignmentโ
This homework is to find the diffraction pattern of a circular aperture far from the screen. Assume there is a circular aperture of diameter and there is a spherical screen at away. The light source is of wavelength . To obtain the diffraction pattern, you can assume there are many point light sources at the lattice points, sitting at the cross points of the vertical lines and horizontal lines, each separated by apart. If the lattice pointโs position is within the circular aperture, then it is allowed to radiate light. Then on the screen you add all the electric field contributions from the light sources of the grid points, and you will be able to obtain the diffraction intensity pattern by squaring the electric field (the detailed derivation is listed in the next page).
In addition to generating the intensity plot of the diffraction pattern, also find and print the radius of the first dark ring and check whether the Rayleigh criterion is satisfied. Also notice that, to calculate intensity is to do the square of the amplitude. However, the โrealโ diffraction pattern is really faint to be observed on the computer screen. Therefore, we also do a โfalseโ intensity image of the diffraction pattern by taking the absolute value of the amplitude as the intensity. Of course, when you want to calculate the radius of the first dark ring, you should use the โrealโ intensity image.
II. Theoretical background
Section titled โII. Theoretical backgroundโThe amplitude of the electric field at position on the screen gets its contribution from all point sources sitting inside the aperture
Next, we substitute the expression for found in the previous section to obtain
Now let , then
Applying some basic trigonometry we get
which is equivalent to
As we have
due to the symmetry of the integration on the โcircularโ aperture (between quotes, since we have approximated it by a square area in our code), we get
where
is the amplitude of the electric field on the spherical screen, which is the one you should calculate by summation over all the grid points on the aperture.
This formula for the amplitude can then directly be translated into code:
class ElectricField {// ...
_computeElectricField(aperture, lambdaInNanoMeter) { const k = 2 * Math.PI / (lambdaInNanoMeter * 1e-9); for (let i = 0; i < this._N; i++) for (let j = 0; j < this._N; j++) this._field[i][j] = aperture.sumRaysAt(i, j, k) / R;}}
class Aperture {// ...
sumRaysAt(i, j, k) { let field = 0; const kx = k * this._kX[i][j]; const ky = k * this._kY[i][j];
for (const [m, n] of this._aperture) field += Math.cos(kx * this._X[m][n] + ky * this._Y[m][n]) * this._dx_dy;
return field;}}