% JINGEL %ressort R=1.5; r=0.75; a=0; b=6*pi; c=0; d=2*pi; [t,u] = meshgrid (a:(b-a)/100:b,c:(d-c)/20:d); x=(R+r*cos(u)).*cos(t); y=(R+r*cos(u)).*sin(t); z=r*sin(u)+t; %ressort = surfl(x,y,z-12); ressort = surfl(x,y,z-14); hold on %corps R=5; a=-pi/2; b=pi/2; c=0; d=2*pi; [p,t]=meshgrid(a:(b-a)/50:b,c:(d-c)/50:d); x=R.*cos(p).*cos(t); y=R.*cos(p).*sin(t); z=R.*sin(p); corps = surfl(x,y,z+10); %tete R=3; a=-pi/2; b=pi/2; c=0; d=2*pi; [p,t]=meshgrid(a:(b-a)/50:b,c:(d-c)/50:d); x=R.*cos(p).*cos(t); y=R.*cos(p).*sin(t); z=R.*sin(p); tete = surfl(x,y,z+18); %chapeau %Définition des caractéristiques du cone: P=3; R=3; a=0; b=R; c=0; d=2*pi; [r,t]=meshgrid(a:(b-a)/10:b,c:(d-c)/50:d); x=r.*cos(t); y=r.*sin(t); z=P*(-r+b); %Dessin du cône: cone = surfl(x,y,z+20); %Dessin de la base: z=0*r; basecone = surfl(x,y,z+20); %bras gauche R=1; L=3; a=-R; b=R; c=-L; d=L; [x,y] = meshgrid (a:(b-a)/50:b,c:(d-c)/50:d); z=sqrt(R.^2-x.^2); brasghaut = surfl(y-7,x,z+10); brasgbas = surfl(y-7,x,-z+10); % bras droit brasdhaut = surfl(y+7,x,z+10); brasdbas =surfl(y+7,x,-z+10); %oeil droit R=0.75; a=-pi/2; b=pi/2; c=0; d=2*pi; [p,t]=meshgrid(a:(b-a)/50:b,c:(d-c)/50:d); x=R.*cos(p).*cos(t); y=R.*cos(p).*sin(t); z=R.*sin(p); oeild = surfl(x+1.6,y-2.8,z+18.4); %oeil gauche oeilg = surfl(x-1.6,y-2.8,z+18.4); shading interp axis image axis off hold off c1=get(corps,'CData'); c2=get(tete,'CData'); c3=get(cone,'CData'); c4=get(basecone,'CData'); c5=get(ressort,'CData'); c6=get(brasghaut,'CData'); c7=get(brasgbas,'CData'); c8=get(brasdhaut,'CData'); c9=get(brasdbas,'CData'); c10=get(oeild,'CData'); c11=get(oeilg,'CData'); orange=[ones(1,64)*63;0:63;zeros(1,64)]./63; bleu=[zeros(2,64);0:63]./63; vert=[zeros(1,64);0:63;zeros(1,64)]./63; rouge=[0:63;zeros(2,64)]./63; violet=[0:63;zeros(1,64);0:63]./63; bleuciel=[zeros(1,64);(0:63)/2+63/2;(0:63)/2+63/2]./63; cop=colormap; cperso=[cop;orange';bleu';vert';rouge';violet';bleuciel']; set(corps,'CData',c1+1) set(tete,'CData',c2+2) set(cone,'CData',c3+3) set(basecone,'CData',c4+3) set(ressort,'CData',c5+4) set(brasghaut,'CData',c6+5) set(brasgbas,'CData',c7+5) set(brasdhaut,'CData',c8+5) set(brasdbas,'CData',c9+5) set(oeild,'CData',c10+6) set(oeilg,'CData',c11+6) colormap (cperso) caxis([0 7]); % écrasement du ressort + déplacement du tout zress = get(ressort,'ZData'); zmin = min(min(zress)); zmax = max(max(zress)); deltaz = (zmax-zmin)*0.02; zcorps = get (corps,'ZData'); ztete = get (tete,'ZData'); zcone = get (cone,'ZData'); zbasecone = get (basecone,'ZData'); zbrasghaut = get (brasghaut,'ZData'); zbrasgbas = get (brasgbas,'ZData'); zbrasdhaut = get (brasdhaut,'ZData'); zbrasdbas = get (brasdbas,'ZData'); zoeilg = get (oeilg,'ZData'); zoeild = get (oeild,'ZData'); boucle=0; while boucle==0; etape = 0; for coeff = 0.98:-0.02:0.5 etape = etape + 1; newzress = (zress-zmin)*coeff+zmin; set(ressort,'ZData',newzress); set(corps,'ZData',zcorps-deltaz*etape); set(tete,'ZData',ztete-deltaz*etape); set(cone,'ZData',zcone-deltaz*etape); set(basecone,'ZData',zbasecone-deltaz*etape); set(brasghaut,'ZData',zbrasghaut-deltaz*etape); set(brasgbas,'ZData',zbrasgbas-deltaz*etape); set(brasdhaut,'ZData',zbrasdhaut-deltaz*etape); set(brasdbas,'ZData',zbrasdbas-deltaz*etape); set(oeilg,'ZData',zoeilg-deltaz*etape); set(oeild,'ZData',zoeild-deltaz*etape); drawnow end for coeff = 0.52:+0.02:1 etape = etape - 1; newzress = (zress-zmin)*coeff+zmin; set(ressort,'ZData',newzress); set(corps,'ZData',zcorps-deltaz*etape); set(tete,'ZData',ztete-deltaz*etape); set(cone,'ZData',zcone-deltaz*etape); set(basecone,'ZData',zbasecone-deltaz*etape); set(brasghaut,'ZData',zbrasghaut-deltaz*etape); set(brasgbas,'ZData',zbrasgbas-deltaz*etape); set(brasdhaut,'ZData',zbrasdhaut-deltaz*etape); set(brasdbas,'ZData',zbrasdbas-deltaz*etape); set(oeilg,'ZData',zoeilg-deltaz*etape); set(oeild,'ZData',zoeild-deltaz*etape); drawnow end end