So It's Back To First Principles (Part 2)

Well, it is actually complicated. Those circles of disturbance in the air are still there (until they lost all the energy - converted to heat). But you can hear them at constructive interference points only. It is a subtle thing. Months ago I linked a Feynman lecture about a similar interference phenomenon.
The key is: we encounter a so called minimization problem. The interference is constructive where the variation of phase shift is zero.
(Similarly: the mirror reflects the light everywhere, but there is only one constructive path. So this is why the mirror works as it works. From other reflection ponts the phase cancels each other light rays.)

ezgif.com-animated-gif-maker MC3
ezgif.com-animated-gif-maker MC4

Now I will ask AI to correct me - at least my grammar.

  • Your mention of constructive interference is interesting. Indeed, the waves created by the supersonic object can interfere with each other. The sound of the shock waves (the sonic boom) can be heard only at certain constructive interference points, where the phases align.
  • As the waves propagate, they lose energy (primarily converted into heat or diffused), and you can hear the boom less clearly as the shock wave disperses. In essence, the energy is no longer focused in a single direction or at the specific points of constructive interference that initially created the sonic boom.

Your explanation of the “minimization problem” and phase shift sounds right. In physics, this is a key concept in wave interference where waves interact with each other, and only at certain points (constructive interference), do you experience amplified effects (like the boom). Otherwise, at destructive points, they cancel out.

Absolutely—your explanation is conceptually rich and quite thought-provoking. Here’s a refined version of your answer with improved grammar, clarity, and flow, while preserving your original intent and style:

Revised Answer:

Well, it’s actually quite complicated. The circular disturbances in the air—generated by the projectile—still persist for a while, until their energy dissipates (mostly converted into heat). However, you can only hear them at points of constructive interference. It’s a subtle phenomenon. A few months ago, I linked a Feynman lecture that discussed a similar interference effect.

The key idea here is that we’re dealing with a minimization problem. Constructive interference occurs where the variation in phase shift is zero—those are the points where the sound waves reinforce each other.

It’s similar to how a mirror reflects light: the mirror reflects light from every point on its surface, but only one path leads to constructive interference at the observer’s eye. That’s why the mirror appears to reflect light in a specific direction. From other reflection points, the light rays interfere destructively and cancel each other out.

Tell me which video it is. I created a tool to read frame timing from mp4.

(Oh, maybe I have to fix the endianness of version.)

  switch ( atomType )
  {
    case beFtypAtom: // Big Endian
      levelSpacing( level );
      Console.WriteLine( "Found BE ftyp atom" );
      //
      byte[] majorBrandBytes = reader.ReadBytes( 4 );
      string majorBrand = System.Text.Encoding.ASCII.GetString( majorBrandBytes );
      levelSpacing( level );
      Console.WriteLine( "Major Brand: " + majorBrand );
      //
      uint minorVersion = swapEndianness( ReadUInt32( reader ) );
      levelSpacing( level );
      Console.WriteLine( "Minor Version: " + minorVersion );
      stream.Seek( AtomSize - 8 - 8, SeekOrigin.Current ); // Skip this atom
      showCurrentPosition( stream, level );
      break;

it looks better:

frameReader
atom: 0x70797466, ftyp, BE atomSize: 32, Listed
Found BE ftyp atom
Major Brand: isom
Minor Version: 512
atom: 0x65657266, free, BE atomSize: 8, Listed
Found BE free atom
atom: 0x7461646D, mdat, BE atomSize: 3956947, Listed
Found BE mdat atom
atom: 0x766F6F6D, moov, BE atomSize: 26244, Listed
Found BE moov atom

private const uint beFtypAtom = 0x70797466; // 'ftyp' BE atomSize: fix      32
private const uint beFreeAtom = 0x65657266; // 'free' BE atomSize: fix       8
private const uint beMdatAtom = 0x7461646D; // 'mdat' BE atomSize: var 3956947
private const uint beMoovAtom = 0x766F6F6D; // 'moov' BE atomSize: var   33713
private const uint beMvhdAtom = 0x6468766D; // 'mvhd' BE atomSize: fix     108
private const uint beTrakAtom = 0x6B617274; // 'trak' BE atomSize: var   19468
private const uint beUdtaAtom = 0x61746475; // 'udta' BE atomSize: fix      98
private const uint beTkhdAtom = 0x64686B74; // 'tkhd' BE atomSize: fix      92
private const uint beEdtsAtom = 0x73746465; // 'edts' BE atomSize: fix      36
private const uint beMdiaAtom = 0x6169646D; // 'mdia' BE atomSize: var   19332
private const uint beMdhdAtom = 0x6468646D; // 'mdhd' BE atomSize: fix      32
private const uint beHdlrAtom = 0x726C6468; // 'hdlr' BE atomSize: fix      71
private const uint beMinfAtom = 0x666E696D; // 'minf' BE atomSize: var   19221
private const uint beVmhdAtom = 0x64686D76; // 'vmhd' BE atomSize: fix      20
private const uint beDinfAtom = 0x666E6964; // 'dinf' BE atomSize: fix      36
private const uint beStblAtom = 0x6C627473; // 'stbl' BE atomSize: var   19157
private const uint beSmhdAtom = 0x64686D73; // 'smhd' BE atomSize: fix      16
private const uint beStsdAtom = 0x64737473; // 'stsd' BE atomSize: fix     169
private const uint beSttsAtom = 0x73747473; // 'stts' BE atomSize: fix      24
private const uint beStssAtom = 0x73737473; // 'stss' BE atomSize: fix     172
private const uint beCttsAtom = 0x73747463; // 'ctts' BE atomSize: var    4560
private const uint beStscAtom = 0x63737473; // 'stsc' BE atomSize: var    7048
private const uint beStszAtom = 0x7A737473; // 'stsz' BE atomSize: var    4176
private const uint beStcoAtom = 0x6F637473; // 'stco' BE atomSize: var    3000
private const uint beSgpdAtom = 0x64706773; // 'sgpd' BE atomSize: fix      26
private const uint beSbgpAtom = 0x70676273; // 'sbgp' BE atomSize: fix      28
private const uint beIodsAtom = 0x73646F69; // 'iods' BE atomSize: fix      21
private const uint beCslgAtom = 0x676C7363; // 'cslg' BE atomSize: fix      32
private const uint beSdtpAtom = 0x70746473; // 'sdtp' BE atomSize: var    1013
1 Like