import graph3; import grid3; import palette; size(400,300,IgnoreAspect); currentprojection=orthographic(dir(50,50)); real f(pair z) {return cos(2*pi*z.x)*sin(2*pi*z.y);} surface s=surface(f,(-1/2,-1/2),(1/2,1/2),50,Spline); surface S=planeproject(unitsquare3)*s; S.colors(palette(s.map(zpart),Rainbow())); draw(S,nolight); draw(s,lightgray+opacity(0.7),render(tessellate=false)); grid3(XYZgrid);