MGL code:
new a 40 50 60 'exp(-x^2-4*y^2-16*z^2)' light on:alpha on copy b a:sinfft b 'x':subplot 5 3 0:call 'splot' copy b a:cosfft b 'x':subplot 5 3 1:call 'splot' copy b a:hankel b 'x':subplot 5 3 2:call 'splot' copy b a:swap b 'x':subplot 5 3 3:call 'splot' copy b a:smooth b 'x':subplot 5 3 4:call 'splot' copy b a:sinfft b 'y':subplot 5 3 5:call 'splot' copy b a:cosfft b 'y':subplot 5 3 6:call 'splot' copy b a:hankel b 'y':subplot 5 3 7:call 'splot' copy b a:swap b 'y':subplot 5 3 8:call 'splot' copy b a:smooth b 'y':subplot 5 3 9:call 'splot' copy b a:sinfft b 'z':subplot 5 3 10:call 'splot' copy b a:cosfft b 'z':subplot 5 3 11:call 'splot' copy b a:hankel b 'z':subplot 5 3 12:call 'splot' copy b a:swap b 'z':subplot 5 3 13:call 'splot' copy b a:smooth b 'z':subplot 5 3 14:call 'splot' stop func splot 0 title 'max=',b.max:norm b -1 1 on:rotate 70 60:box surf3 b 0.5:surf3 b -0.5 return
C++ code:
void smgl_data2(mglGraph *gr) // data transforms { mglData a(40,50,60),b; gr->Fill(a,"exp(-x^2-4*y^2-16*z^2)"); gr->Light(true); gr->Alpha(true); b.Set(a); b.SinFFT("x"); gr->SubPlot(5,3,0); splot2(gr,b); b.Set(a); b.CosFFT("x"); gr->SubPlot(5,3,1); splot2(gr,b); b.Set(a); b.Hankel("x"); gr->SubPlot(5,3,2); splot2(gr,b); b.Set(a); b.Swap("x"); gr->SubPlot(5,3,3); splot2(gr,b); b.Set(a); b.Smooth("x"); gr->SubPlot(5,3,4); splot2(gr,b); b.Set(a); b.SinFFT("y"); gr->SubPlot(5,3,5); splot2(gr,b); b.Set(a); b.CosFFT("y"); gr->SubPlot(5,3,6); splot2(gr,b); b.Set(a); b.Hankel("y"); gr->SubPlot(5,3,7); splot2(gr,b); b.Set(a); b.Swap("y"); gr->SubPlot(5,3,8); splot2(gr,b); b.Set(a); b.Smooth("y"); gr->SubPlot(5,3,9); splot2(gr,b); b.Set(a); b.SinFFT("z"); gr->SubPlot(5,3,10);splot2(gr,b); b.Set(a); b.CosFFT("z"); gr->SubPlot(5,3,11);splot2(gr,b); b.Set(a); b.Hankel("z"); gr->SubPlot(5,3,12);splot2(gr,b); b.Set(a); b.Swap("z"); gr->SubPlot(5,3,13);splot2(gr,b); b.Set(a); b.Smooth("z"); gr->SubPlot(5,3,14);splot2(gr,b); }