Functions

UpdateCircles[invec_,v_,va_,dt_] := Module[{outvec},
outvec = Table[{invec[[j,1]]-v dt,invec[[j,2]] + va dt},{j,1,Length[invec]}];
outvec = Join[outvec,{{-v dt, va dt}}];
Return[outvec];
]

ShowCircles[invec_] := Show[Graphics[Table[Circle[{invec[[j,1]],0},invec[[j,2]]],{j,1,Length[invec]}]]]

ShowMach[v_,va_,dt_] := Module[{mtab, cvec,j},
cvec = {{-v dt, va dt}};
mtab = {};
If[va < v,
T = ArcSin[va/v];
,
T= 0;
];
For[j = 1, j ≤ 10, j = j+1,
cvec = UpdateCircles[cvec,v,va,dt];
mtab = Join[mtab,{Show[{ShowCircles[cvec],Graphics[{{PointSize[.025],Point[{0,0}]},Line[{{0,0},{-Cos[T],Sin[T]}}],Line[{{0,0},{-Cos[T],-Sin[T]}}]}]},PlotRange->{{-4,.5},{-2,2}}]}];
];
Return[mtab];
]

ShowMachNoCone[v_,va_,dt_] := Module[{mtab, cvec,j},
cvec = {{-v dt, va dt}};
mtab = {};
If[va < v,
T = ArcSin[va/v];
,
T= 0;
];
For[j = 1, j ≤ 10, j = j+1,
cvec = UpdateCircles[cvec,v,va,dt];
mtab = Join[mtab,{Show[{ShowCircles[cvec],Graphics[{{PointSize[.025],Point[{0,0}]},}]},PlotRange->{{-4,.5},{-2,2}}]}];
];
Return[mtab];
]

Example

The ShowMach function takes the source speed first, then the “wave” speed, and finally a “time step” over which to plot the wave fronts. All of the pictures occur in the rest frame of the moving object.   The Mach cone is 
shown - at least partially, with Sin[Tm] = vw/v.

For v < vw:

ListAnimate[ShowMach[.5,1.,.1]]

Now for v > vw:

ListAnimate[ShowMachNoCone[1,.5,.1]]

ListAnimate[ShowMach[.7,.5,.1]]