ClearAll;
$DefaultFont = {"Times-Roman",10};
Needs["Graphics`Graphics`"];
f[m_,b_]:= 36 (m^(5/3) b^(-3/2))/1000;
shade[m_,b_]:= ((f[1,0.1] - f[m,b])/(f[1,0.1] - f[0.1,1]))^10;
xticks = {{0.9," "},{1,1}};
yticks = Table[{0.1 i," "},{i,1,10}];
zticks = {0.5,1};
axeslabels = Graphics3D[{Text[FontForm["x",{"Times-Roman",12}],{1.16,0,0.1}],
					   Text[FontForm["y",{"Times-Roman",12}],{0,1.16,0.1}],
					   Text[FontForm["z",{"Times-Roman",12}],{0.1,0,1.25}]}];
					   
plot = Plot3D[{f[m,b],GrayLevel[shade[m,b]]},{m,0.1,1},{b,0.1,1},
				AxesEdge->{{-1,-1},{-1,-1},{-1,-1}},
				ViewPoint->{2,2,2},
				BoxRatios->{1,1,1},
				Shading->True,
				ClipFill->None,
				PlotRange->{{0,1.16},{0,1.16},{0,1.26}},
				Boxed->False,
				Axes->True,
				Mesh->True,
				MeshStyle->Dashing[{0.01,0.01}],
				Ticks->{xticks,yticks,zticks}];
left = Show[plot,axeslabels,PlotLabel->"(a)  z = P(x,y)"];

line1 = ParametricPlot3D[{t,0.3,f[t,0.3]},{t,0.1,1},
				AxesEdge->{{-1,-1},{-1,-1},{-1,-1}},
				ViewPoint->{2,2,2},
				BoxRatios->{1,1,1},
				Shading->False,
				PlotRange->{{0,1.16},{0,1.16},{0,1.26}},
				Boxed->False,
				Axes->True,
				Ticks->{xticks,yticks,zticks}];
line2 = ParametricPlot3D[{0.8,t,f[0.8,t]},{t,0.1,1}];
line3 = ParametricPlot3D[{1,t,f[1,t]},{t,0.1,1}];
line4 = ParametricPlot3D[{0.1,t,f[0.1,t]},{t,0.1,1}];
line5 = ParametricPlot3D[{t,0.1,f[t,0.1]},{t,0.1,1}];
line6 = ParametricPlot3D[{t,1,f[t,1]},{t,0.1,1}];
textK = Graphics3D[Text[K,{0.2,0.4,f[0.1,0.3]}]];
textL = Graphics3D[Text[L,{1,0.25,f[1,0.45]}]];
textM = Graphics3D[Text[M,{0.7,0.1,f[0.8,0.1]}]];
textN = Graphics3D[Text[N,{0.73,1.08,f[0.8,1]}]];
textP = Graphics3D[Text["(m,k)",{0.72,0.45,f[0.8,0.3]}]];
text = {textK,textL,textM,textN,textP};

right = Show[line1,line2,line3,line4,line5,line6,axeslabels,text,
			 PlotLabel->"(b)  KL:  z = P(x,0.3)\n       MN: z = P(0.8,y)"];
Show[GraphicsArray[{{left,right}}],PlotLabel->"Figure 25.1"]