import graph3; import palette; size(8cm,0); currentprojection=perspective(2,5,2); real f(pair z) {return exp(-((z.x-1)^2+z.y^2)) -10*(z.x^3+z.x*z.y^4-z.x/5)*exp(-abs(z)^2);} surface s=surface(f,(-3,-3),(3,3),60,60,Spline); real[] level=uniform(-4.5,4.5,6); s.colors(palette(s.map(new real(triple v) {return find(level >= v.z);}), Rainbow())); draw(s,meshpen=blue);