function EscherPattern(nbli,nbco,motif)

signature=motif.motifm;
lettreA=motif.motifa;

% Sommets. S1 est le motif sans rotation; S2 est le motif avec rotation de 90°
% S3 est le motif avec rotation de 180° et S4 est le motif avec rotation de 270°
S1=motif.S; % 0°
r90=[cos(pi/2) -sin(pi/2);sin(pi/2) cos(pi/2)];
S2=r90*S1;	% 90°
S2(1,:)=S2(1,:)+5;
r180=[cos(pi) -sin(pi);sin(pi) cos(pi)];
S3=r180*S1;	% 180°
S3=S3+5;
r270=[cos(3*pi/2) -sin(3*pi/2);sin(3*pi/2) cos(3*pi/2)];
S4=r270*S1;	% 270°
S4(2,:)=S4(2,:)+5;

% remplissage des signatures
ligne=[];
for i=1:nbco
	ligne=[ligne, signature];
end
M=[];
for j=1:nbli
	M=[M;ligne];
end

% lettreA
[nbf,nbc]=size(motif.F);
Fa=flipud(motif.F);
for i=nbf:-1:1
	Aa{i}=motif.A{nbf-i+1};
end


% représentation

% matrice des couleurs est une 2x2 ou une nbli x nbco
[a,b,c]=size(motif.coul);
if (a==2)&(b==2)
	acompleter=1;
else
	acompleter=0;
end


% superposition
h=plot(0,0);
hold on
delete(h)

dim=motif.dim;
for li=1:nbli
	for co=1:nbco
		% choix de la rotation
		nor=abs(M(li,co));
		eval(['S=S',num2str(nor),';'])
		S=S';
		if acompleter
			matc=motif.coul(rem(li+1,2)+1,rem(co+1,2)+1,:);	
		else
			matc=motif.coul(li,co,:);
		end
		couleurs=motif.C(matc,:);
		if M(li,co)<0
			signe=-1;
			dy=dim;
		else
			signe=1;
			dy=0;
		end
		if lettreA(nor)
			faces=Fa;
			arets=Aa;
		else
			faces=motif.F;
			arets=motif.A;
		end
	
	
		% représentation de la cellule
		for i=1:nbf
			nbs=faces(i,1);
			x=S(faces(i,2:nbs+1),1);
			y=signe*(S(faces(i,2:nbs+1),2));
			fill(x+dim*co,y+dim*li+dy,couleurs(i,:),'edgecolor',couleurs(i,:))
			% arête
			a=arets{i};
			[nba,nbc]=size(a);
			for j=1:nba
				plot([S(a(j,1),1) S(a(j,2),1)]+dim*co,signe*([S(a(j,1),2) S(a(j,2),2)])+dim*li+dy,'k')
			end
			% cadre
			%%%%%% plot([0 5 5 0 0]+dim*co,[0 0 5 5 0]+dim*li)
		end
	end
end


axis off
axis equal
hold off
