Ferramentas de Usuário

Ferramentas de Site


dev_geral:pascal:pronto-a-usar:sierpinski

Triângulo de Sierpinski

Mais uma brincadeira com a unit Graph… Já alguém ouviu falar do Triângulo de Sierpinski? Muito famoso entre os entusiastas da Geometria Fractal.

Querem saber como é este triângulo? Este programa calcula os pontos do triângulo segundo um método de aleatoriedade e que só falha ~1% dos pontos - isto explicará um ou outro pixel fora do triângulo.

Enjoy! ;-)

Código-fonte

PROGRAM Sierpinski;
 
USES sysutils, graph;
 
VAR Driver, Modus : smallint;
    x, y, n : real;
    k : integer;
 
BEGIN
     try
        writeln('A desenhar o Triangulo de Sierpinski...');
 
        try
           DetectGraph(Driver, Modus);
           InitGraph(Driver, Modus, '');
 
           randomize;
           x := random;
           y := random;
 
           for k:=1 to 30000 do begin
               n := random;
 
               if (n<=1/3) then begin
                  x := x/2;
                  y := y/2;
               end
               else if (n>1/3) and (n<=2/3) then begin
                  x := (x+0.5)/2;
                  y := (1+y)/2;
               end
               else if (n>2/3) then begin
                  x := (x+1)/2;
                  y := y/2;
               end;
 
               PutPixel(round(500*x), round(500-500*y), White);
           end
 
        except
              ON ex:exception do begin
                 writeln('ERRO: ',ex.message);
                 CloseGraph;
              end;
        end
 
     finally
            write('ENTER para terminar...');
            readln; // pausa
            CloseGraph;
     end;
END.

Preview do resultado

Triângulo de Sierpinski - preview do resultado


dev_geral/pascal/pronto-a-usar/sierpinski.txt · Última modificação em: 2018/05/14 21:37 (edição externa)