% illustration of the volume under a surface
function main()
L=5; % box size
N=100; % number of points in a lot of places
lw=2; % width of lines
alphatop=1; % transparency
alphaside=0.82;
alphabot=0.8;
bluetop =[0, 1, 0.8];
blueside=[0.2, 0.9, 0.8]; %bluetop;%[0, 0, 1];
bluebot=[0.5, 0.5, 0.5]; %bluetop;%[0, 0, 1];
black=[0, 0, 0];
% the function whose surface we will plot
f=inline('10-(x.^2-y.^2)/8', 'x', 'y');
XX=linspace(-L, L, N);
YY=XX;
[X, Y]=meshgrid(XX, YY);
Z=f(X, Y);
% the surface of the side
XS = [XX, 0*XX+L invert_vector(XX), 0*XX-L];
YS = [0*XX-L, YY, 0*XX+L, invert_vector(YY)];
XS = [XS' XS']';
YS = [YS' YS']';
ZS = 0*XS;
ZS(2, :) = f(XS(2, :), YS(2, :));
% the contour of the bottom
XD=[-L, L, L, -L, -L];
YD=[-L, -L, L, L, -L];
ZD=XD*0;
% prepare figure 1 for plotting
figure(1); clf; hold on; axis equal; axis off;
% plot the function u
surf(X, Y, Z, 'FaceColor', bluetop, 'EdgeColor','none', 'FaceAlpha', alphatop); % top
surf(X, Y, 0*Z, 'FaceColor', bluebot, 'EdgeColor','none', 'FaceAlpha', alphabot); % bottom
surf(XS, YS, ZS, 'FaceColor', blueside, 'EdgeColor','none', 'FaceAlpha', alphaside); % sides
phi = -68; theta = 28;
view (phi, theta);
camlight headlight; lighting phong; % make nice lightning
print('-dpng', '-r200', 'Volume_under_surface.png') % save to file.
function Z = invert_vector(X)
N=length(X);
Z = X;
for i=1:N
Z(i)=X(N-i+1);
end