%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%         6.gyakorlat         %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Nemlin. din. rsz-ek alapjai %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%        2014.11.05/06        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%          Fraktálok     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Sierpinsky háromszög
N=1000;
%a háromszög csúcsai, az algoritmus fix pontjai
P(1,1)=1;
P(1,2)=1;
P(2,1)=1000;
P(2,2)=1;
P(3,1)=500;
P(3,2)=860;

figure;
title('Sierpinski háromszög');
xlim([0 N])
ylim([0 N])
iternum=1000000; %iterációszám
C=zeros(iternum,2); %ide kerülnek majd a háromszög pontjai

% c - aktuális pont - referencia (elõször az egyik fix pont)
c = P(floor(rand*3)+1 ,:);

%hold on;
for sz=1:iternum

    % minden iterációban 3 és 1 közötti értéket random generálunk,
    % ez megadja, hogy melyik fix ponttal kötöm össze az aktuális referencia pontot
    r =floor(rand*3)+1; 
    
    % referencia pont frissítése:
    % random választott sarok és a jelenlegi pont között a távolságot felezzük
    % majd ezzel meghatározzuk az új referncia pontot

    c = [(c(1) + P(r,1)) / 2, (c(2) + P(r,2)) / 2]; %az új pont a fix és a refenciapont egyenesének felezõpontja
    C(sz,:)=c; %eltárolom az új pontot
    %{
    %lépésenkénti kirajzolás:
    plot(c(1),c(2),'.', 'MarkerSize', 5);
    xlabel(['Iteration: ', num2str(sz)]);
    drawnow;
    %}
end

%hold off;
%figure;
plot(C(:,1), C(:,2), '.', 'MarkerSize', 1);
title('Sierpinski háromszög');
xlabel(['Iteration: ', num2str(iternum)]);