boolean Couleurs; Couleurs=false; %Style cartoon pickup pencircle xscaled 2bp yscaled 0.25bp rotated 60; % Définitions des points d'accroche pair Or[],P[],Ja[],Br[],Bo,Ne,Ye,Ch,Pap,Cr,Mo,Ce; P1=(0,0); P2-P1=u*(5,0); P3-P2=u*(0,6.75); P4-P3=P1-P2; Ja1=1/4[P1,P2]; Ja2=3/4[P1,P2]; Br1=2/5[P1,P4]; Br2=2/5[P2,P3]; Or1=3.5/5[P1,P4]; Or2=3.5/5[P2,P3]; Ch=1/2[P4,P3]; Ye=4/5[1/2[P1,P2],1/2[P3,P4]]; Ne=1/2[1/2[P1,P2],1/2[P3,P4]]; Mo=2/5[1/2[P1,P2],1/2[P3,P4]]; Bo=1/5[1/2[P1,P2],1/2[P3,P4]]; Pap=1/2[P1,P2]; Cr=Pap; vardef Corps(expr nb)= save $; path $; path RetiensCorps[]; RetiensCorps1=(0,0.125){dir-50}..{dir50}(0.5,0.125){dir-50}..{dir50}(1,0.125){dir-50}..{dir50}(1.5,0.125){dir-50}..{dir50}(2,0.125){dir-50}..{dir50}(2.5,0.125){dir160}..{dir90}(2.5,1.5)..{dir180}(1.25,2.25){dir180}..{dir-90}(0,1.5){dir-90}..{dir-160}cycle; RetiensCorps1:=RetiensCorps1 xscaled 2u yscaled 3u; % RetiensCorps2=(0,0)--(2.5,0){dir70}..{dir120}(2.5,1.5)--(2.25,1.25)--(2,1.75)--(1.75,1.5)--(1.25,2.25)--(0.75,1.5)--(0.5,1.75)--(0.25,1.25)--(0,1.5){dir-120}..{dir-70}cycle; RetiensCorps2:=RetiensCorps2 xscaled 2u yscaled 3u; % RetiensCorps3=(fullcircle scaled 2.5) shifted(1.25,1.25); % RetiensCorps6=(0,0)--(2.5,0){dir70}..{dir120}(1.25,2.25){dir-120}..{dir-70}cycle; RetiensCorps7=RetiensCorps6 scaled 0.9; RetiensCorps8=RetiensCorps7 shifted(center RetiensCorps6-center RetiensCorps7); pair MC[],NC[]; nbche:=20; for k=0 upto nbche: MC[k]=point(k*length RetiensCorps6/nbche) of RetiensCorps6; NC[k]=point(k*length RetiensCorps8/nbche) of RetiensCorps8; endfor; RetiensCorps4=MC[0]{dir(angle(NC0-MC0)-5+uniformdeviate(10))} for k=0 upto nbche-1:..NC[k]{dir(angle(MC[k+1]-NC[k])-10+uniformdeviate(20))}..MC[k+1]{dir(angle(NC[k+1]-MC[k+1])-5+uniformdeviate(10))} endfor..cycle; RetiensCorps4:=RetiensCorps4 xscaled 2u yscaled 3u; RetiensCorps9=(fullcircle scaled (0.9*2.5)) shifted(1.25,1.25); for k=0 upto 360: MC[k]:=pointarc(RetiensCorps3,k); NC[k]:=pointarc(RetiensCorps9,k); endfor; RetiensCorps51=NC[0]{dir90}..NC[5]{dir(angle(MC[10]-NC[5]))}--MC[5]{dir90}% ..{dir180}NC[20]{dir(angle(MC[25]-NC[20]))}..MC[25]{dir115}% ..{dir180}NC[45]{dir(angle(MC[50]-NC[45]))}..MC[50]{dir140}% ..{dir180}NC[75]{dir(angle(MC[80]-NC[75]))}..MC[70]{dir160}% ..MC[85]..NC[90]; RetiensCorps5=RetiensCorps51..(symetrie(reverse RetiensCorps51,center RetiensCorps3,center RetiensCorps3+(0,1)))..symetrie(RetiensCorps51,center RetiensCorps3)..symetrie(reverse RetiensCorps51,center RetiensCorps3,center RetiensCorps3+(1,0))..cycle; RetiensCorps5:=RetiensCorps5 xscaled 2u yscaled ((6.75/2.5)*u); $=RetiensCorps[nb]; $ enddef; %%%%%%%%%%%%% % Yeux %%%%%%%%%%%%% vardef Yeux(expr nb)= save $; picture $; picture RetiensYeux[]; RetiensYeux1=image(% path cyeux,pupille; cyeux=(fullcircle xscaled 0.9 yscaled 1.25) rotated -10; pupille=0.1*(cosd(0),sind(0)) for k=1 upto 14:..(0.02+0.03*(k+1)-0.01*k)*(cosd(90*k),sind(90*k)) endfor; fill (cyeux scaled u) withcolor white; fill symetrie(cyeux scaled u,pointarc(cyeux scaled u,10)+(0,-u),pointarc(cyeux scaled u,10)+(0,u)) withcolor white; trace cyeux scaled u; trace pupille scaled u; trace symetrie(cyeux scaled u,pointarc(cyeux scaled u,10)+(0,-u),pointarc(cyeux scaled u,10)+(0,u)); trace symetrie(pupille scaled u,pointarc(cyeux scaled u,10)+(0,-u),pointarc(cyeux scaled u,10)+(0,u)); ); RetiensYeux2=image(% path cyeux,pupille; cyeux=(fullcircle xscaled 0.9 yscaled 1.25); pupille=fullcircle scaled 0.2; fill rotation(cyeux scaled u,(0,0),-90) shifted(0.8u,-0.1u) withcolor white; trace rotation(cyeux scaled u,(0,0),-90) shifted(0.8u,-0.1u); fill rotation((pupille scaled u) shifted(pointarc(cyeux scaled u,-30)+(-0.1u,0)),(0,0),-90) shifted(0.8u,-0.1u); fill (cyeux scaled u) withcolor white; trace cyeux scaled u; fill (pupille scaled u) shifted(pointarc(cyeux scaled u,0)+(-0.1u,0)); pair M[]; M1=pointarc(cyeux scaled u,75)+(0,0.05u); M2=pointarc(cyeux scaled u,110)+0.5*sqrt(2)*(-0.05u,0.05u); fill M1{dir150}..{dir-120}M2{dir90}..{dir-90}M1--cycle; fill symetrie((M1{dir150}..{dir-120}M2{dir90}..{dir-90}M1--cycle),pointarc(cyeux scaled u,0),pointarc(cyeux scaled u,0)+(0,1)) shifted(0,-0.2u); ); RetiensYeux3=image(% path cyeux,pupille; cyeux=(fullcircle xscaled 0.9 yscaled 1.25) rotated 30; pupille=fullcircle scaled 0.25 shifted(0.2,0.2); fill (cyeux scaled u) withcolor white; fill symetrie(cyeux scaled u,pointarc(cyeux scaled u,-30)+(0,-u),pointarc(cyeux scaled u,-30)+(0,u)) withcolor white; fill (cercles((0.5,0.5),0.25) scaled u) withcolor white; trace cyeux scaled u; fill pupille scaled u; trace symetrie(cyeux scaled u,pointarc(cyeux scaled u,-30)+(0,-u),pointarc(cyeux scaled u,-30)+(0,u)); fill symetrie(pupille scaled u,pointarc(cyeux scaled u,-30)+(0,-u),pointarc(cyeux scaled u,-30)+(0,u)); trace cercles((0.5,0.5),0.25) scaled u; fill (cercles((0.5,0.5),0.1) shifted(-0.1,0)) scaled u ; ); RetiensYeux4=image(% path cyeux,pupille; trace (fullcircle xscaled 0.9 yscaled 1.25) scaled u withcolor CoulCorps; cyeux=(fullcircle xscaled 1.1 yscaled 1.5) rotated 90; pupille=fullcircle scaled 0.75; fill (cyeux scaled u) withcolor white; trace cyeux scaled u; fill pupille scaled u; ); RetiensYeux5=image(% path cyeux,pupille; cyeux=(fullcircle xscaled 0.9 yscaled 1.25); pupille=fullcircle scaled 0.25; fill (cyeux scaled u) withcolor white; fill symetrie(cyeux scaled u,pointarc(cyeux scaled u,0)+(0,-u),pointarc(cyeux scaled u,0)+(0,u)) withcolor white; fill ((subpath(0.05*length (cyeux scaled u),0.45*length (cyeux scaled u)) of (cyeux scaled u)){dir 30}..(point(0.05*length (cyeux scaled u)) of (cyeux scaled u))--cycle); fill symetrie(((subpath(0.05*length (cyeux scaled u),0.45*length (cyeux scaled u)) of (cyeux scaled u)){dir 30}..(point(0.05*length (cyeux scaled u)) of (cyeux scaled u))--cycle),pointarc(cyeux scaled u,0)+(0,-u),pointarc(cyeux scaled u,0)+(0,u)); trace cyeux scaled u; fill (pupille shifted (0,0.25)) scaled u; trace symetrie(cyeux scaled u,pointarc(cyeux scaled u,0)+(0,-u),pointarc(cyeux scaled u,0)+(0,u)); fill symetrie(pupille scaled u,pointarc(cyeux scaled u,0)+(0,-u),pointarc(cyeux scaled u,0)+(0,u)); ); $=RetiensYeux[nb]; $ enddef; %%%%%% %Bouche %%%%%% vardef Bouche(expr nb)= save $; picture $; picture RetiensBouche[]; RetiensBouche1=image( path contourbouche; contourbouche=(0,0){dir-30}..{dir30}(0.5u,0){dir30}..{dir0}(1.5u,0.5u)..{dir-90}(2u,0){dir-90}..{dir120}(1.5u,-0.3u)..{dir180}(0.5u,0); if Couleurs: fill (0.5u,0){dir30}..{dir0}(1.5u,0.5u)..{dir-90}(2u,0){dir-90}..{dir120}(1.5u,-0.3u)..{dir180}(0.5u,0)--cycle withcolor white; fi; trace contourbouche; trace (0.5u,0){dir10}..{dir-10}(2u,0); trace (point(0.35*length contourbouche) of contourbouche){dir-80}..(point(0.875*length contourbouche) of contourbouche); trace (point(0.45*length contourbouche) of contourbouche){dir-80}..(point(0.775*length contourbouche) of contourbouche); ); RetiensBouche2=image( path contourbouche,jointure,levreh,levreb; contourbouche=(0,0){dir90}..(0.1u,0.35u){dir0}..(u,0.25u)..(1.5u,0.4u)..(1.9u,0.35u){dir-80}..(2u,0){dir-90}..(1.9u,-0.35u)..(1.5u,-0.4u)..(u,-0.25u)..(0.1u,-0.35u)..cycle; jointure=(0,0){dir90}..(0.1u,0u){dir0}..(u,-0.1u)..(1.5u,0.05u)..(1.9u,0){dir-80}..(2u,0); if Couleurs: fill contourbouche withcolor white; fi; trace contourbouche; trace jointure; levreh=subpath(0,length contourbouche/2) of contourbouche; levreb=subpath(length contourbouche/2,length contourbouche) of contourbouche; pair tt[],ss[]; for k=1 upto 5: tt[k]=point((k/6)*length jointure) of jointure; ss[k]=point((1/8+k/7)*length jointure) of jointure; trace tt[k]..(perpendiculaire((0,0),(2u,0),tt[k]) intersectionpoint levreh); trace ss[k]..(perpendiculaire((0,0),(2u,0),ss[k]) intersectionpoint levreb); endfor; path carrieh[],carrieb[]; carrieh[4]=buildcycle(perpendiculaire((0,0),(2u,0),tt[4]),levreh,reverse(perpendiculaire((0,0),(2u,0),tt[5])),reverse(jointure)); fill carrieh4; carrieh[2]=buildcycle(perpendiculaire((0,0),(2u,0),tt[1]),levreh,reverse(perpendiculaire((0,0),(2u,0),tt[2])),reverse(jointure)); fill carrieh2; carrieb[2]=buildcycle(jointure,perpendiculaire((0,0),(2u,0),ss[3]),levreb,reverse(perpendiculaire((0,0),(2u,0),ss[2]))); fill carrieb2; ); RetiensBouche3=image( path contourbouche,jointure,levreh,levreb; contourbouche=(0,0.75u){dir-60}..{dir0}(u,0.75u){dir0}..{dir60}(2u,0.75u){dir-110}..{dir180}(u,-0.15u){dir180}..{dir110}(0,0.75u)--cycle; fill contourbouche; levreh=subpath(0,2) of contourbouche; levreb=subpath(2,length contourbouche) of contourbouche; pair M[]; M1=point(0.1*length levreh) of levreh; M2=point(0.15*length levreh) of levreh; fill ((subpath(0.1*length levreh,0.15*length levreh) of levreh)--(iso(M1,M2)+(0,-0.1u))--cycle) withcolor white; M3=point(0.25*length levreh) of levreh; M4=point(0.325*length levreh) of levreh; fill ((subpath(0.25*length levreh,0.325*length levreh) of levreh)--(iso(M3,M4)+(0,-0.2u))--cycle) withcolor white; M5=point(0.45*length levreh) of levreh; M6=point(0.55*length levreh) of levreh; fill ((subpath(0.45*length levreh,0.55*length levreh) of levreh)--(iso(M5,M6)+(0,-0.35u))--cycle) withcolor white; M7=point(0.675*length levreh) of levreh; M8=point(0.75*length levreh) of levreh; fill ((subpath(0.675*length levreh,0.75*length levreh) of levreh)--(iso(M7,M8)+(0,-0.2u))--cycle) withcolor white; M10=point(0.875*length levreh) of levreh; M11=point(0.925*length levreh) of levreh; fill ((subpath(0.875*length levreh,0.925*length levreh) of levreh)--(iso(M10,M11)+(0,-0.1u))--cycle) withcolor white; %%%%%%%%%%%%% M1:=point(0.1*length levreb) of levreb; M2:=point(0.15*length levreb) of levreb; fill ((subpath(0.1*length levreb,0.15*length levreb) of levreb)--(iso(M1,M2)+(0,0.15u))--cycle) withcolor white; M3:=point(0.2*length levreb) of levreb; M4:=point(0.3*length levreb) of levreb; fill ((subpath(0.2*length levreb,0.3*length levreb) of levreb)--(iso(M3,M4)+(0,0.2u))--cycle) withcolor white; M5:=point(0.35*length levreb) of levreb; M6:=point(0.45*length levreb) of levreb; fill ((subpath(0.35*length levreb,0.45*length levreb) of levreb)--(iso(M5,M6)+(0,0.2u))--cycle) withcolor white; M7:=point(0.5*length levreb) of levreb; M8:=point(0.55*length levreb) of levreb; fill ((subpath(0.5*length levreb,0.55*length levreb) of levreb)--(iso(M7,M8)+(0,0.1u))--cycle) withcolor white; trace contourbouche; ); RetiensBouche4=image( path contourbouche,jointure,levreh,levreb; pair M[]; M0=(0,0); M1=(2u,0.5u); contourbouche=(0,0)--(2u,0.5u)--(1.25u,-0.2u)--cycle; fill contourbouche; trace (0,-0.2u)--(0,0.2u); trace (2u,0.3u)--(2u,0.7u); M2=6.5/10[M0,M1]; M3=8.5/10[M0,M1]; M4=(0.5*(6.5+8.5)/10)[M0,M1]; M5=2.9[M4,rotation(M3,M4,-90)]; trace contourbouche; fill M2{dir-80}..{dir0}M5{dir60}..M3--cycle withcolor white; trace M2{dir-80}..{dir0}M5{dir60}..M3--cycle; trace M4--(7/10)[M4,M5]; ); RetiensBouche5=image( path contourbouche,jointure,levreh,levreb; contourbouche=(0,0.5u){dir60}..{dir0}(0.25u,0)..(0.6u,0.2u)..(1.2u,-0.2u)..{dir-10}(2u,0); trace (-0.05u,0.55u)--(0.05u,0.45u); trace (1.95u,-0.05u)--(2.05u,0.05u); trace contourbouche; ); $=RetiensBouche[nb]; $ enddef; %%%% % Nez %%%% vardef Nez(expr nb)= save $; picture $; picture RetiensNez[]; RetiensNez1=image( trace (0,0.2u){dir-120}..{dir0}(0.25u,0); trace (0.25u,0.1u){dir-90}..{dir60}(1.7u,0.2u); trace (1.7u,0.2u){dir-110}..{dir100}(2u,0.2u); ); RetiensNez2=image( trace (0.1u,0.5u){dir-100}..{dir-10}(0,0){dir-10}..(u,0.2u)..(2u,0){dir0}..{dir100}(1.9u,0.5u); ); RetiensNez3=image( if Couleurs: fill (0,0){dir90}..{dir-10}(u,0.25u){dir10}..{dir-90}(2u,0){dir-90}..{dir170}(u,-0.25u){dir-170}..{dir90}cycle withcolor white; fi; trace (0,0){dir90}..{dir-10}(u,0.25u){dir10}..{dir-90}(2u,0){dir-90}..{dir170}(u,-0.25u){dir-170}..{dir90}cycle; fill (fullcircle xscaled 0.1u yscaled 0.2u) shifted(0.5u,0); fill (fullcircle xscaled 0.1u yscaled 0.2u) shifted(1.5u,0); ); RetiensNez4=image( pair M[]; M0=(0,0); M1=(0.5u,0); M2=2[iso(M0,M1),rotation(M1,M0,60)]; fill M0{dir-10}..{dir10}M1..{dir120}M2{dir-120}..{dir-10}cycle; ); RetiensNez5=image( pair M[]; M0=(0,0); M1=(0.5u,0); M2=(1.5u,0); M3=(2u,0); path contournez; contournez=M1{dir100}..{dir-100}M2{dir-160}..{dir160}cycle; fill contournez withcolor white; fill buildcycle(subpath(0,0.5*length contournez) of contournez,(point(0.15*length contournez) of contournez){dir0}..{dir-90}(u,-0.5u),contournez); fill symetrie(buildcycle(subpath(0,0.5*length contournez) of contournez,(point(0.15*length contournez) of contournez){dir0}..{dir-90}(u,-0.5u),contournez),(u,0),(u,0.5)); trace contournez; ); $=RetiensNez[nb]; $ enddef; %%%%% %Oreilles %%%%% vardef Oreille(expr nb)= save $; picture $; picture RetiensOreille[]; RetiensOreille1=image( draw (0,0){dir150}..{dir60}(-0.2u,1.5u){dir-100}..(u,0.5u); ); RetiensOreille2=image( draw (0,0){dir180}..{dir-120}(-u,-0.25u){dir180}..{dir0}(-u,0.5u){dir-60}..{dir0}(u,0.25u); draw (-u,-0.25u){dir120}..{dir60}(-u,0.5u); ); RetiensOreille3=image( draw (0,0)--(-u,0)--(-u,u){dir-90}..{dir90}(-0.5u,u)--(-0.5u,0.5u)--(u,0.5u); ); RetiensOreille4=image( path coinor; coinor=(0,0){dir60}..{dir90}(-0.5u,1.5u){dir-60}..{dir0}(u,u); fill (subpath(0.3*length coinor,0.7*length coinor) of coinor)--cycle; trace coinor; ); RetiensOreille5=image( path coinor; coinor=(0,0)--(-0.5u,1u)--(0,1.5u)--(-0.25u,u)--(u,0.5u); trace coinor; ); $=RetiensOreille[nb]; $ enddef;