% Représentation d'une lampe datant des années 1960: la lampe lava

% J.-B. Roux, Collège de Saussure, novembre 1999

% Initialisation des variables
global tc
tc=0.25;	% temps critique: la lava se sépare.
n=16;		% nombre de méridiens et parallèles sur la sphère

% Dessin de la lampe:
% bas
z=0:0.1:4;
r=2-0.7*sin(pi*z.*(1-(z.^2)/512)/4);
[x,y,z]=cylinder(r,17);
surfl(x,y,4*z)
hold on

% haut
z=11:0.1:12;
r=2-0.7*sin(pi*z.*(1-(z.^2)/512)/4);
[x,y,z]=cylinder(r,17);
surfl(x,y,11+z)

% couvercle
z=12;
rz=2-0.7*sin(pi*z.*(1-(z.^2)/512)/4);
r=0:0.1:rz;
[x,y,z]=cylinder(r,17);
surfl(x,y,12*ones(size(x)))

% verre
z=4:0.1:11;
r=2-0.7*sin(pi*z.*(1-(z.^2)/512)/4);
plot3(r.*cos(0),r.*sin(0),z,'r',r.*cos(pi),r.*sin(pi),z,'r')

% dessin 3D
colormap(autumn)
shading interp
view(0,30)
axis equal
axis off
set(gcf,'position',[160   182   207   392])
set(gca,'position',[0 0 1 1])
figure(gcf)
hold on

% animation de la lava
%%%lava(1,n,0.01,1)
%%%lava(2,n,0.01,1)
lava(4,n,0.01,1)
%%%lava(4,n,0.01,1,'sauve')	% enregistrement

hold off
