function mengerDemo(n,ech)
% MENGERDEMO(N,ECH) représente une éponge de Menger de niveau N
% Attention, pour N=2, le temps est raisonnable, pour N=3, c'est faisable,
% au-delà, il faut de la patience. ECH permet de diminuer la taille des
% cubes. Par exemple, ECH=0.9.

% JBRoux, collège de Saussure janvier 2003
global M

% intitialisation, par défaut N=2.
switch nargin
    case 0
        n=2;
        ech=1;
    case 1
        ech=1;
end

% mise à zéro de la matrice M qui représente le cube
tic
taille=3^n;
M=zeros(taille,taille,taille);
menger(n,0,0,0,0,0,0,3^n)   % fonction récursive déterminant quel 
% cube est visible (on met un 1 dans M à cet
% emplacement)

% représentation graphique
% matrice des sommets du cube
S=[ 0 0 0   
    1 0 0
    1 1 0
    0 1 0
    0 0 1
    1 0 1
    1 1 1
    0 1 1];
% matrice des faces du cube
F=[ 1 2 6 5
    5 6 7 8
    1 5 8 4];
coul=[1 0 0 % matrice des couleurs des faces
    0 1 0
    0 0 1];
[nbf,nbs]=size(F);
h=plot3(0,0,0);
hold on
delete(h)
for i=1:taille
    for j=1:taille
        for k=1:taille
            for l=1:nbf
                if M(i,j,k)
                    ind=F(l,:);
                    fill3(ech*S(ind,1)+i,ech*S(ind,2)+j,ech*S(ind,3)+k,coul(l,:))
                end
            end
        end
    end
end

axis equal
axis off
hold off
set(gcf,'renderer','opengl')
figure(gcf)
toc
