image thumbnail
from Attractor by Ankur Pawar
Quadratic attractor,Clifford attractor,Peter De Jong generated using histogram method.

peterdejong4.m
%Peter de Jong
% xn+1 = sin(a yn) - cos(b xn)
% yn+1 = sin(c xn) - cos(d yn)
%execution time about 14 seconds
xres =1000;
yres =1000;      
N =300000;     %number of iterations


  liststr={'[2.01 -2.53  1.61 -0.33]';
           '[1.4  -2.3   2.4  -2.1]';
           '[-2.7 -0.09 -0.86 -2.2]';
           '[-2.24 0.43 -0.65 -2.43]'};
  [ss,v] = listdlg('PromptString','Select any one ',...
                  'SelectionMode','single',...
                  'ListString',liststr);
if v==1
    tic
    coeff=str2num(liststr{ss});
    a=coeff(1);
    b=coeff(2);
    c=coeff(3);
    d=coeff(4);

    xn=0;yn=0;
    x=0;y=0;
    xmin=0;xmax=0;ymin=0;ymax=0;
    for n=1:2000
            xn =sin(a* y) - cos(b* x);
            yn =sin(c* x) - cos(d* y);
            x=xn;
            y=yn;
            xmin=min(xmin,xn);
            xmax=max(xmax,xn);
            ymin=min(ymin,yn);
            ymax=max(ymax,yn);
    end


    img=zeros(xres,yres,3);     %3D histogram array
    xdiff=1.05*((xmax)-(xmin))/xres;
    ydiff=1.05*((ymax)-(ymin))/yres;
    minx=1.05*xmin;
    miny=1.05*ymin;


    xn=0;yn=0;
    x=0;y=0;
    total=30;



    for nn=1:total
        for n=1:N
                xn =sin(a* y) - cos(b* x);
                yn =sin(c* x) - cos(d* y);
                x=xn;
                y=yn;
                
                aa=mod(xn,1);
                s=1;
                v=1;
                zo = floor(6*aa); 
                rough = (zo); 
                f = aa*6 - zo;
                p = v*(1-s);
                q = v*(1-s*f);
                t = v*(1-s*(1-f));

                switch (rough)    
                case 0 
                    r=v; g=t; bb=p;
                case 1 
                    r=q; g=v; bb=p;
                case 2 
                    r=p; g=v; bb=t;
                case 3 
                    r=p; g=q; bb=v;
                case 4 
                    r=t; g=p; bb=v;
                case 5 
                    r=v; g=p; bb=q;
                end             


                indx=floor((x-minx)/xdiff);
                indy=floor((y-miny)/ydiff);
                img(indy,indx,1)=img(indy,indx,1)+r;
                img(indy,indx,2)=img(indy,indx,2)+g;
                img(indy,indx,3)=img(indy,indx,3)+bb;
        end
    end
    h=0.5*fspecial('average',[2 2]);
    img=imfilter(img,h);
    image(uint8(256-img))
    toc
    imwrite(uint8(256-img),['peterdejong' num2str(ss) '.png'],'png');
end

Contact us at files@mathworks.com