%%% % Visual Pattern %%% \setKVdefault[Pattern]{Type=1,Etape=3} \NewDocumentCommand\VisualPattern{o}{% \useKVdefault[Pattern]% \setKV[Pattern]{#1}% \IfStrEqCase{\useKV[Pattern]{Type}}{% {284}{\BuildPatternDeuxCentQuatreVingtQuatre}% {254}{\BuildPatternDeuxCentCinquanteQuatre}% {156}{\BuildPatternCentCinquanteSix}% {155}{\BuildPatternCentCinquanteCinq}% {55}{\BuildPatternCinquanteCinq}% {53}{\BuildPatternCinquanteTrois}% {48}{\BuildPatternQuaranteHuit}% {46}{\BuildPatternQuaranteSix}% {45}{\BuildPatternQuaranteCinq}% {39}{\BuildPatternTrenteNeuf}% {30}{\BuildPatternTrente}% {24}{\BuildPatternVingtQuatre}% {20}{\BuildPatternVingt}% {19}{\BuildPatternDixNeuf}% {18}{\BuildPatternDixHuit}% {15}{\BuildPatternQuinze}% {14}{\BuildPatternQuatorze}% {6}{\BuildPatternSix}% {5}{\BuildPatternCinq}% {4}{\BuildPatternQuatre}% {3}{\BuildPatternTrois}% {2}{\BuildPatternDeux}% {1}{\BuildPatternUn}% }% }% %284 \NewDocumentCommand\BuildPatternDeuxCentQuatreVingtQuatre{}{ \ifluatex% \mplibforcehmode% \begin{mplibcode} Etape:=\useKV[Pattern]{Etape}; input PfCSolid; intensite:=1.5; Ferme[0]:=false; outcolor:=LightSteelBlue; incolor:=white; nb:=1;subh:=1; creux:=true; Initialisation(2500,40,20,50); Objetcube1("a=0.25"); nbobj:=1; TR:=(0,a,0); %base for k=1 upto 2: NBobj:=nbobj; nbobj:=nbobj+1; ObjetDeplacement[nbobj](NBobj); endfor; % barre gauche for k=1 upto Etape: TR:=(0,0,k*a); NBobj:=1; nbobj:=nbobj+1; ObjetDeplacement[nbobj](NBobj); endfor; %barre gauche for k=1 upto Etape-1: TR:=(0,2*a,k*a); NBobj:=1; nbobj:=nbobj+1; ObjetDeplacement[nbobj](NBobj); endfor; DessineFusion; \end{mplibcode} \fi }% % 254 \NewDocumentCommand\BuildPatternDeuxCentCinquanteQuatre{}{ \ifluatex% \mplibforcehmode% \begin{mplibcode} Etape:=\useKV[Pattern]{Etape}; for k=0 upto Etape-1: for l=0 upto Etape-1: fill ((fullcircle scaled 4mm) shifted (5mm*(l,k))) withcolor LightSteelBlue; trace ((fullcircle scaled 4mm) shifted (5mm*(l,k))); endfor; endfor; fill ((fullcircle scaled 4mm) shifted (5mm*(0,-1))) withcolor LightSteelBlue; trace ((fullcircle scaled 4mm) shifted (5mm*(0,-1))); fill ((fullcircle scaled 4mm) shifted (5mm*(-1,0))) withcolor LightSteelBlue; trace ((fullcircle scaled 4mm) shifted (5mm*(-1,0))); fill ((fullcircle scaled 4mm) shifted (5mm*(0,Etape))) withcolor LightSteelBlue; trace ((fullcircle scaled 4mm) shifted (5mm*(0,Etape))); \end{mplibcode} \fi }% %156 \NewDocumentCommand\BuildPatternCentCinquanteSix{}{ \ifluatex% \mplibforcehmode% \begin{mplibcode} Etape:=\useKV[Pattern]{Etape}; input PfCSolid; intensite:=1.5; Ferme[0]:=false; outcolor:=LightSteelBlue; incolor:=white; nb:=1;subh:=1; creux:=true; Initialisation(2500,40,20,50); Objetcube1("a=0.25"); nbobj:=1; TR:=(0,a,0); for k=1 upto Etape: NBobj:=nbobj; nbobj:=nbobj+1; ObjetDeplacement[nbobj](NBobj); endfor; TR:=(0,0,-0.25); for k=1 upto Etape: NBobj:=nbobj; nbobj:=nbobj+1; ObjetDeplacement[nbobj](NBobj); endfor; TR:=(0,0.25,0); for k=1 upto Etape: NBobj:=nbobj; nbobj:=nbobj+1; ObjetDeplacement[nbobj](NBobj); endfor; %nbobj=4; DessineFusion; \end{mplibcode} \fi }% %155 \NewDocumentCommand\BuildPatternCentCinquanteCinq{}{ \ifluatex% \mplibforcehmode \begin{mplibcode} Etape:=\useKV[Pattern]{Etape}; input PfCSolid; intensite:=1.5; Ferme[0]:=false; outcolor:=LightSteelBlue; incolor:=white; nb:=1;subh:=1; creux:=true; Initialisation(2500,40,20,50); angx:=-40; Objetcube1("a=0.25"); angx:=0; nbobj:=1; TR:=(0,a*cosd(-40),a*sind(-40)); for k=0 upto Etape-2: NBobj:=nbobj; nbobj:=nbobj+1; ObjetDeplacement[nbobj](NBobj); endfor; NBobj:=1; TR:=(0,-a*cosd(-40),-a*sind(-40)); for k=0 upto Etape-2: nbobj:=nbobj+1; ObjetDeplacement[nbobj](NBobj); NBobj:=nbobj; endfor; NBobj:=1; TR:=(0,a*sind(-40),-a*cosd(-40)); for k=0 upto Etape-2: nbobj:=nbobj+1; ObjetDeplacement[nbobj](NBobj); NBobj:=nbobj; endfor; NBobj:=1; TR:=(0,-a*sind(-40),a*cosd(-40)); for k=0 upto Etape-2: nbobj:=nbobj+1; ObjetDeplacement[nbobj](NBobj); NBobj:=nbobj; endfor; NBobj:=1; TR:=(a,0,0);% for k=0 upto Etape-2: nbobj:=nbobj+1; ObjetDeplacement[nbobj](NBobj); NBobj:=nbobj; endfor; NBobj:=1; TR:=(-a,0,0); for k=0 upto Etape-2: nbobj:=nbobj+1; ObjetDeplacement[nbobj](NBobj); NBobj:=nbobj; endfor; DessineFusion; \end{mplibcode} \fi% }% %55 \NewDocumentCommand\BuildPatternCinquanteCinq{}{% \ifluatex% \begin{Allumettes}[Echelle=0.35] Etape=\useKV[Pattern]{Etape}; pair A[],B[],C[],D[],E[]; A0=(0,0); B0=A0; B1-B0=u*(0,1); B2=rotation(B0,B1,108); B3=rotation(B1,B2,108); B4=rotation(B2,B3,108); A1=B1; A2-A1=u*(-1,0); A3-A0=A2-A1; trace Allu(B0,B1); trace Allu(B1,B2); trace Allu(B2,B3); trace Allu(B3,B4); trace Allu(B4,B0); for k=0 upto Etape-1: trace Allu(A3,A0) shifted(k*u*(-1,0)); trace Allu(A1,A2) shifted(k*u*(-1,0)); trace Allu(A2,A3) shifted(k*u*(-1,0)); endfor; \end{Allumettes} \fi% }% %53 \NewDocumentCommand\BuildPatternCinquanteTrois{}{% \ifluatex% \begin{Allumettes}[Echelle=0.35] Etape=\useKV[Pattern]{Etape}; pair A[],B[],C[],D[],E[]; A0=(0,0); B0=A0; B1-B0=u*(0,1); B2=rotation(B0,B1,60); A1=B1; A2-A1=u*(-1,0); A3-A0=A2-A1; trace Allu(B0,B1); trace Allu(B1,B2); trace Allu(B2,B0); for k=0 upto Etape-1: trace Allu(A3,A0) shifted(k*u*(-1,0)); trace Allu(A1,A2) shifted(k*u*(-1,0)); trace Allu(A2,A3) shifted(k*u*(-1,0)); endfor; \end{Allumettes} \fi% }% %48 \NewDocumentCommand\BuildPatternQuaranteHuit{}{ \ifluatex% \mplibforcehmode \begin{mplibcode} Etape:=\useKV[Pattern]{Etape}; input PfCSolid; intensite:=1.5; Ferme[0]:=false; outcolor:=LightSteelBlue; incolor:=white; nb:=1;subh:=1; creux:=true; Initialisation(2500,40,20,50); Objetcube1("a=0.25"); nbobj:=1; TR:=(0,a,0); for k=0 upto Etape-2: NBobj:=nbobj; nbobj:=nbobj+1; ObjetDeplacement[nbobj](NBobj); endfor; NBobj:=1; TR:=(-a,0,0); for k=0 upto Etape-2: nbobj:=nbobj+1; ObjetDeplacement[nbobj](NBobj); NBobj:=nbobj; endfor; NBobj:=1; TR:=(0,0,a);% for k=0 upto Etape-2: nbobj:=nbobj+1; ObjetDeplacement[nbobj](NBobj); NBobj:=nbobj; endfor; DessineFusion; \end{mplibcode} \fi% }% %46 \NewDocumentCommand\BuildPatternQuaranteSix{}{ \ifluatex% \mplibforcehmode \begin{mplibcode} Etape:=\useKV[Pattern]{Etape}; input PfCSolid; intensite:=1.5; Ferme[0]:=false; outcolor:=LightSteelBlue; incolor:=white; nb:=1;subh:=1; creux:=true; Initialisation(2500,40,20,50); Objetcube1("a=0.25"); nbobj:=1; TR:=(0,a,0); for k=0 upto Etape-2: NBobj:=nbobj; nbobj:=nbobj+1; ObjetDeplacement[nbobj](NBobj); endfor; NBobj:=1; TR:=(0,-a,0); for k=0 upto Etape-2: nbobj:=nbobj+1; ObjetDeplacement[nbobj](NBobj); NBobj:=nbobj; endfor; NBobj:=1; TR:=(a,0,0); for k=0 upto Etape-2: nbobj:=nbobj+1; ObjetDeplacement[nbobj](NBobj); NBobj:=nbobj; endfor; NBobj:=1; TR:=(-a,0,0); for k=0 upto Etape-2: nbobj:=nbobj+1; ObjetDeplacement[nbobj](NBobj); NBobj:=nbobj; endfor; NBobj:=1; TR:=(0,0,a);% for k=0 upto Etape-2: nbobj:=nbobj+1; ObjetDeplacement[nbobj](NBobj); NBobj:=nbobj; endfor; DessineFusion; \end{mplibcode} \fi% }% %45 \NewDocumentCommand\BuildPatternQuaranteCinq{}{% \ifluatex% \mplibforcehmode% \begin{mplibcode} pair A[]; Etape:=\useKV[Pattern]{Etape}; A[0]=(0,0); path piece; piece=unitsquare scaled 5mm shifted(-2.5mm,-2.5mm); for k=0 upto (2*Etape): for l=0 upto Etape: if (k=Etape) and (l=0): else: trace piece shifted(5mm*(k,l)); fi; endfor; endfor; \end{mplibcode} \fi } %39 \NewDocumentCommand\BuildPatternTrenteNeuf{}{ \ifluatex% \mplibforcehmode% \begin{mplibcode} Etape:=\useKV[Pattern]{Etape}; input PfCSolid; intensite:=1.5; Ferme[0]:=false; outcolor:=Orange; incolor:=white; nb:=1;subh:=1; creux:=true; Initialisation(2500,40,20,50); Objetcube1("a=0.25"); nbobj:=1; for k=0 upto Etape-1:%x for l=0 upto Etape-1:%y for m=Etape-1-l downto 0:%z nbobj:=nbobj+1; TR:=(k*a,l*a,m*a); ObjetDeplacement[nbobj](1); endfor; endfor; endfor; DessineFusion; \end{mplibcode} \fi }% %30 \NewDocumentCommand\BuildPatternTrente{}{% \ifluatex% \mplibforcehmode% \begin{mplibcode} pair A[]; A[0]=(0,0); Etape:=\useKV[Pattern]{Etape}; picture Cle; path piece; piece=(unitsquare scaled 3mm) shifted(-1.5mm,-1.5mm); if (Etape mod 2)=0: A0:=(0,1.75mm)+(Etape div 2)*(0,3.5mm); for k=0 upto Etape-1: for l=0 upto Etape-1: if (k*l)<>(Etape-1)*(Etape-1): draw piece shifted(A[0]+3.5mm*(-k,l)); draw symetrie(piece shifted(A[0]+3.5mm*(-k,l)),(0,0)); fi; endfor; endfor; for k=0 upto ((Etape div 2)-1): draw piece shifted((0,1.75mm)+k*(0,3.5mm)); draw symetrie(piece shifted((0,1.75mm)+k*(0,3.5mm)),(0,0)); endfor; else: A0:=(0,0)+((Etape div 2)+1)*(0,3.5mm); for k=0 upto Etape-1: for l=0 upto Etape-1: if (k*l)<>(Etape-1)*(Etape-1): draw piece shifted(A[0]+3.5mm*(-k,l)); draw symetrie(piece shifted(A[0]+3.5mm*(-k,l)),(0,0)); fi; endfor; endfor; for k=1 upto (Etape div 2): draw piece shifted(k*(0,3.5mm)); draw symetrie(piece shifted(k*(0,3.5mm)),(0,0)); endfor; draw piece; fi; Cle=currentpicture; currentpicture:=nullpicture; draw rotation(Cle,(0,0),40); \end{mplibcode} \fi% }% %24 \NewDocumentCommand\BuildPatternVingtQuatre{}{% \ifluatex% \mplibforcehmode% \begin{mplibcode} pair A[]; Etape:=\useKV[Pattern]{Etape}; A[0]=(0,0); path piece; piece=unitsquare scaled 5mm shifted(-2.5mm,-2.5mm); drawoptions(withcolor Orange); for k=0 upto Etape+1: for l=0 upto Etape-1: fill piece shifted(5mm*(k,l)); endfor; endfor; fill (piece shifted(0,Etape*5mm)); drawoptions(); for k=0 upto Etape+1: for l=0 upto Etape-1: trace piece shifted(5mm*(k,l)); endfor; endfor; trace (piece shifted(0,Etape*5mm)); \end{mplibcode} \fi } %20 \NewDocumentCommand\BuildPatternVingt{}{% \ifluatex% \mplibforcehmode% \begin{mplibcode} pair A[]; Etape:=\useKV[Pattern]{Etape}; A[0]=(0,0); for l=0 upto Etape-1: for k=0 upto Etape+1: draw (unitsquare scaled 5mm) shifted(A[0]+5mm*(k,l)); endfor; endfor; \end{mplibcode} \fi% }% %19 \NewDocumentCommand\BuildPatternDixNeuf{}{% \ifluatex% \mplibforcehmode% \begin{mplibcode} pair A[]; Etape:=\useKV[Pattern]{Etape}; A[0]=(0,0); path piece; piece=unitsquare scaled 5mm shifted(-2.5mm,-2.5mm); drawoptions(withcolor LightGreen); for k=0 upto Etape+1: for l=0 upto Etape-1: fill piece shifted(5mm*(k,l)); endfor; endfor; fill (piece shifted(5mm,-5mm)); fill (piece shifted(5mm,Etape*5mm)); drawoptions(); for k=0 upto Etape+1: for l=0 upto Etape-1: trace piece shifted(5mm*(k,l)); endfor; endfor; trace (piece shifted(5mm,-5mm)); trace (piece shifted(5mm,Etape*5mm)); \end{mplibcode} \fi% }% %18 \NewDocumentCommand\BuildPatternDixHuit{}{% \ifluatex% \mplibforcehmode% \begin{mplibcode} pair A[]; Etape:=\useKV[Pattern]{Etape}; Somme=0; for k=0 upto Etape-1: A[k]=(0,0)+Somme*5mm*(2,-1); for l=0 upto k: fill polygone(A[k],A[k]+5mm*(2,0),A[k]+5mm*(2,1),A[k]+5mm*(1,1),A[k]+5mm*(1,2),A[k]+5mm*(0,2)) withcolor LightGreen; endfor; for l=0 upto k: trace polygone(A[k],A[k]+5mm*(2,0),A[k]+5mm*(2,1),A[k]+5mm*(1,1),A[k]+5mm*(1,2),A[k]+5mm*(0,2)); trace chemin(A[k]+5mm*(1,0),A[k]+5mm*(1,1),A[k]+5mm*(0,1)); endfor; Somme:=Somme+1; endfor; \end{mplibcode} \fi } %15 \NewDocumentCommand\BuildPatternQuinze{}{% \ifluatex% \mplibforcehmode% \begin{mplibcode} pair A[]; Etape:=\useKV[Pattern]{Etape}; Somme=0; trace (fullcircle scaled 3mm); for k=0 upto Etape-1: A[k]=(0,0)+Somme*4mm*(1,0); %for l=0 upto k: fill ((unitsquare scaled 3mm) shifted(A[k]+4mm*(1,0)-(center (unitsquare scaled 3mm)))) withcolor 0.7white; trace ((unitsquare scaled 3mm) shifted(A[k]+4mm*(1,0)-(center (unitsquare scaled 3mm)))); trace (fullcircle scaled 3mm) shifted(A[k]+4mm*(1,-1)); trace (fullcircle scaled 3mm) shifted(A[k]+4mm*(1,1)); trace (fullcircle scaled 3mm) shifted(A[k]+4mm*(2,0)); %endfor; Somme:=Somme+2; endfor; \end{mplibcode} \fi% }% %14 \NewDocumentCommand\BuildPatternQuatorze{}{% \ifluatex% \mplibforcehmode% \begin{mplibcode} pair A[]; Etape:=\useKV[Pattern]{Etape}; A[0]=(0,0); for l=0 upto Etape-1: for m=0 upto 5: draw (unitsquare scaled 5mm) shifted(A[0]+5mm*(-m,l)); endfor; endfor; draw (unitsquare scaled 5mm) shifted(A[0]+5mm*(-5,Etape)); \end{mplibcode} \fi% }% %6 \NewDocumentCommand\BuildPatternSix{}{% \ifluatex% \begin{Allumettes}[Echelle=0.35] Etape=\useKV[Pattern]{Etape}; pair A[],B[],C[],D[],E[]; A0=(0,0); B0-A0=u*(1,0); C0=rotation(B0,A0,60); picture UnitTriangle; UnitTriangle=image( trace Allu(A0,B0); trace Allu(B0,C0); trace Allu(C0,A0); ); currentpicture:=nullpicture; for k=0 upto Etape-1: for l=0 upto k: trace UnitTriangle shifted(A0+k*(B0-A0)+l*(C0-B0)); endfor; endfor; \end{Allumettes} \fi% }% %5 \NewDocumentCommand\BuildPatternCinq{}{% \ifluatex% \mplibforcehmode% \begin{mplibcode} pair A[]; Etape:=\useKV[Pattern]{Etape}; A0=(0,0); for k=Etape-1 upto Etape-1: drawoptions(withcolor LightSteelBlue); fill (fullcircle scaled 3mm) shifted A[0]; for l=0 upto k: for m=1 upto k+2: fill (fullcircle scaled 3mm) shifted(A[0]+5mm*(l,m)); fill symetrie((fullcircle scaled 3mm) shifted(A[0]+5mm*(l,m)),A[0],A[0]+(-1,1)); endfor; endfor; fill (fullcircle scaled 3mm) shifted(A[0]+5mm*(-1,k+2)); fill symetrie((fullcircle scaled 3mm) shifted(A[0]+5mm*(-1,k+2)),A[0],A[0]+(-1,1)); % trace drawoptions(); trace (fullcircle scaled 3mm) shifted A[0]; for l=0 upto k: for m=1 upto k+2: trace (fullcircle scaled 3mm) shifted(A[0]+5mm*(l,m)); trace symetrie((fullcircle scaled 3mm) shifted(A[0]+5mm*(l,m)),A[0],A[0]+(-1,1)); endfor; endfor; trace (fullcircle scaled 3mm) shifted(A[0]+5mm*(-1,k+2)); trace symetrie((fullcircle scaled 3mm) shifted(A[0]+5mm*(-1,k+2)),A[0],A[0]+(-1,1)); endfor; \end{mplibcode} \fi% } \NewDocumentCommand\BuildPatternQuatre{}{% \ifluatex% \mplibforcehmode% \begin{mplibcode} Etape:=\useKV[Pattern]{Etape}; % fill ((unitsquare scaled 5mm) shifted (5mm*0*(1,1))) withcolor LightSteelBlue; trace ((unitsquare scaled 5mm) shifted (5mm*0*(1,1))); for k=1 upto Etape: for l=1 upto k: fill ((unitsquare scaled 5mm) shifted (5mm*l*(1,1))) withcolor LightSteelBlue; fill ((unitsquare scaled 5mm) shifted (5mm*l*(1,-1)))withcolor LightSteelBlue; fill ((unitsquare scaled 5mm) shifted (5mm*l*(-1,1))) withcolor LightSteelBlue; fill ((unitsquare scaled 5mm) shifted (5mm*l*(-1,-1))) withcolor LightSteelBlue; endfor; endfor; % for k=1 upto Etape: for l=1 upto k: trace ((unitsquare scaled 5mm) shifted (5mm*l*(1,1))); trace ((unitsquare scaled 5mm) shifted (5mm*l*(1,-1))); trace ((unitsquare scaled 5mm) shifted (5mm*l*(-1,1))); trace ((unitsquare scaled 5mm) shifted (5mm*l*(-1,-1))); endfor; endfor; % \end{mplibcode} \fi% }% \NewDocumentCommand\BuildPatternTrois{}{% \ifluatex% \mplibforcehmode% \begin{mplibcode} Etape:=\useKV[Pattern]{Etape}; % for k=1 upto Etape: for l=Etape downto k: fill ((unitsquare scaled 5mm) shifted (5mm*(Etape-l+1,k-1))) withcolor LightSteelBlue; endfor; endfor; for k=1 upto Etape: for l=Etape downto k: trace ((unitsquare scaled 5mm) shifted (5mm*(Etape-l+1,k-1))) withcolor white; endfor; endfor; % \end{mplibcode} \fi% }% \NewDocumentCommand\BuildPatternDeux{}{% \ifluatex% \mplibforcehmode% \begin{mplibcode} Etape:=\useKV[Pattern]{Etape}; % input PfCSolid; % intensite:=1.5; Ferme[0]:=false; outcolor:=LightSteelBlue; incolor:=white; nb:=1;subh:=1; creux:=true; % Initialisation(2500,40,20,50); Objetcube0("a=0.25"); for k=1 upto Etape: TR:=(0,2*k,0); ObjetDeplacement1(0); nbobj:=1; for l=1 upto k-1: TR:=(0,0.25*l,0); nbobj:=nbobj+1; ObjetDeplacement[nbobj](1); endfor; for l=1 upto k-1: TR:=(0,0.25*(k-1),0.25*l); nbobj:=nbobj+1; ObjetDeplacement[nbobj](1); endfor; endfor; %nbobj=13; DessineFusion; \end{mplibcode} \fi% }% \NewDocumentCommand\BuildPatternUn{}{% \ifluatex% \mplibforcehmode% \begin{mplibcode} u:=5mm; pair A[],O[]; path cc[],dd[]; Etape=\useKV[Pattern]{Etape}; % k:=Etape; O[k]=(0,0); dd[k]=unitsquare scaled (k*u); cc[k]=dd[k] shifted (O[k]-center(dd[k])); trace cc[k]; for l=1 upto 4: A[l]:=point l of cc[k]; endfor; %horizontales et verticales for m=1 upto k-1: trace ((m/k)[A1,A4])--((m/k)[A2,A3]); trace ((m/k)[A1,A2])--((m/k)[A4,A3]); endfor; \end{mplibcode} \fi% }%