% PARACHUTE % Ce script nécessite la fonction: cylindre %parachute=demi-sphère a=0; b=2*pi; c=0; d=pi/2; [t,u]=meshgrid(a:(b-a)/50:b,c:(d-c)/50:d); xp=cos(t).*cos(u); yp=sin(t).*cos(u); zp=sin(u); p(1)=surfl(xp,yp,zp); shading interp hold on %tete parachutiste=sphère a=0; b=2*pi; c=-pi/2; d=pi/2; [t,u]=meshgrid(a:(b-a)/50:b,c:(d-c)/50:d); xt=cos(t).*cos(u)/5; yt=sin(t).*cos(u)/5; zt=sin(u)/5-1.5; p(2) = surfl(xt,yt,zt); %corps=cylindre a=-0.09; b=0.09; c=-2.5; d=-1.5; [xc,zc] = meshgrid(a:(b-a)/50:b,c:(d-c)/50:d); yc = sqrt(0.09.^2 - xc.^2); xc = [xc -xc]; yc = [yc -yc]; zc = [zc zc]; p(3) = surfl(xc,yc,zc); %corde du parachute Rfil = 0.03; p(4) = cylindre(Rfil,[0 0 -2],[1 0 0]); p(5) = cylindre(Rfil,[0 0 -2],[-1 0 0]); p(6) = cylindre(Rfil,[0 0 -2],[0 1 0]); p(7) = cylindre(Rfil,[0 0 -2],[0 -1 0]); cible = surfl(xp*2,yp*2,zp*0-22.5); shading flat axis image axis off % couleurs c1=get(p(1),'CData'); c2=get(p(2),'CData'); c3=get(p(3),'CData'); % palette personnelle % un bloc rouge, puis un bloc vert puis un bleu c=(0:63)./63; nul=zeros(1,64); colormap gray cg = colormap; perso=[c nul nul;nul c nul;nul nul c]'; perso = [cg;perso]; % on associe aux sphères les couleurs personnelles set(p(1),'CData',c1+1); set(p(2),'CData',c2+2); set(p(3),'CData',c3+3); % il faut dire à Matlab qu'on a changé les graduations de couleur % les couleurs ne sont plus graduées de 0 à 1 % mais de 0 à 3 caxis([0 4]) colormap(perso) % descente du parachute n = 50; dz = 20/n; for etape = 1:n for i = 1:length(p) z = get(p(i),'ZData'); set(p(i),'ZData',z-dz); end angle = rand*25*(-1)^etape; rotate(p,[0 1 0],angle,[0 0 -etape*dz]) drawnow end hold off