Jump to content

Recommended Posts

Posted

Vamos festejar a mudança de plataforma com mais um snippet que eu acho ser engraçado e muito educativo 😛

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~3% dos pontos - isto explicará um ou outro pixel fora do triângulo.

Enjoy! 😉

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.

Disponível na Wiki

  • Vote 1

Knowledge is free!

Posted

Entusiastas da Geometria Fractal?

Mas isso existe? Sempre pensei que isso dos entusiastas era um mito urbano, e que na verdade era tudo feito com espelhos! 😄

Tá boa moço! 🙂

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Posted

Com espelhos ou sem espelhos, diz-me lá se o triângulo não é bonito? 😄

Eu acho que a Geometria Fractal é uma área muito interessante... como um método aleatório tão simples produz um resultado que, à partida, pareceria muito difícil de resolver.

Knowledge is free!

Posted (edited)

não consigo correr esse código. dá-me erro no try.

Isso é porque o teu compilador não deve estar a apanhar correctamente a unit SysUtils.

Podes ver isso entretanto, mas para poderes testar agora, aqui fica o mesmo snippet do Thoga31 mas sem o uso da estrutura try.

PROGRAM triang;
USES
sysutils, graph;
VAR
  Driver, Modus : smallint;
  x, y, n : real;
  k : integer;
BEGIN
 writeln('A desenhar o Triangulo de Sierpinski...');
 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;
 write('ENTER para terminar...');
 readln; // pausa
 CloseGraph;
END.

Thoga, dá um efeito castiço! Sem os cálculos, nunca na vida se conseguia fazer tal coisa!

Edited by nunopicado

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Posted

É pá agora deixaram-me curioso...deviam por umas fotos ou um video para os cuscos como eu poderem ver, sem ter que instalar o pascal e a copiar o código.. 😉

captur12.jpg

Lindo... Vale a pena instalar o pascal e correr isto! 😉

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Posted (edited)

Ena, já temos duas imagens! 😄

Quanto ao Try... mete a directiva {$mode objfpc} antes do código, ou então a {$mode objpas} caso a primeira não funcione. O Free Pascal só corre o Try com uma destas directivas, o que é um pouco frustrante...

Edited by thoga31

Knowledge is free!

Posted

Um que corre este bem e é pequeno é o Dev-Pascal... Não o recomendo para programar, mas serve para estas coisinhas pequenas... 😉

Já instalei, criei um novo projecto em console (ou algo parecido) copiei e colei o código, mas dá erro, diz " Resource file. icon file not found(please change it in project Options)

Férias! Estou por aqui: http://maps.google.p...001549&t=h&z=20 (a bulir claro está!)

Nunca mais é verão outra vez.. :)

Posted

Vais a Project, depois a Options, e onde tem a opção Icon (ou Application Icon, já não me lembro), defines o ícone qualquer (ficheiro .ico). Se não tiveres nenhum à mão, saca um qualquer, não é importante. Mas tens de por algum!

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Posted

Qual é que estavas a fazer download?

Tenta este: http://sourceforge.n...ad?source=files

Já instalei (tenho a impressão que foi este que tentei instalar, mas de outro link) e já funciona..Só tem um problemazito (não é bem problema) é rapido de mais, 🙂 acabo por só conseguir ver o resultado final!

Férias! Estou por aqui: http://maps.google.p...001549&t=h&z=20 (a bulir claro está!)

Nunca mais é verão outra vez.. :)

Posted (edited)

Insere a linha seguinte imediatamente após a que diz PutPixel(.........);

sleep(1);

Isto vai fazer o programa esperar 1 ms entre cada pixel que escreve.

Edited by nunopicado

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Posted

O Dev-Pascal dava esse problema porque criaste um Project e não um New Source File fora de qualquer projecto: um projecto necessita sempre de umas quantas coisas extras que só atrapalham quando queremos testar algo em 5 minutos 😉

Knowledge is free!

  • 4 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.