thoga31 Posted May 16, 2012 at 03:00 PM Report #456097 Posted May 16, 2012 at 03:00 PM 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 1 Report Knowledge is free!
nunopicado Posted May 16, 2012 at 03:05 PM Report #456099 Posted May 16, 2012 at 03:05 PM 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.
thoga31 Posted May 16, 2012 at 03:11 PM Author Report #456102 Posted May 16, 2012 at 03:11 PM 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!
EMCM Posted May 16, 2012 at 04:04 PM Report #456128 Posted May 16, 2012 at 04:04 PM não consigo correr esse código. dá-me erro no try.
nunopicado Posted May 16, 2012 at 07:55 PM Report #456192 Posted May 16, 2012 at 07:55 PM (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 May 16, 2012 at 07:57 PM 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.
Gnrtuga Posted May 16, 2012 at 08:53 PM Report #456206 Posted May 16, 2012 at 08:53 PM É 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.. 😉 Férias! Estou por aqui: http://maps.google.p...001549&t=h&z=20 (a bulir claro está!) Nunca mais é verão outra vez.. :)
pmg Posted May 16, 2012 at 09:07 PM Report #456212 Posted May 16, 2012 at 09:07 PM O artigo da Wikipedia sobre o tal do triangulo de Sierpinski tem uma imagem satisfatoria. 1 Report What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
thoga31 Posted May 16, 2012 at 09:07 PM Author Report #456214 Posted May 16, 2012 at 09:07 PM Aqui está o resultado final através do programa 😉 1 Report Knowledge is free!
nunopicado Posted May 16, 2012 at 09:13 PM Report #456218 Posted May 16, 2012 at 09:13 PM É 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.. 😉 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.
thoga31 Posted May 16, 2012 at 09:15 PM Author Report #456221 Posted May 16, 2012 at 09:15 PM (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 May 16, 2012 at 09:15 PM by thoga31 Knowledge is free!
Gnrtuga Posted May 16, 2012 at 09:19 PM Report #456222 Posted May 16, 2012 at 09:19 PM Obrigado por matarem a minha curiosidade! É de facto um resultado curioso... p.s já estava a fazer download de um compilador de pascal, mas entretanto deu erro. Férias! Estou por aqui: http://maps.google.p...001549&t=h&z=20 (a bulir claro está!) Nunca mais é verão outra vez.. :)
thoga31 Posted May 16, 2012 at 09:26 PM Author Report #456226 Posted May 16, 2012 at 09:26 PM Um que corre este bem e é pequeno é o Dev-Pascal... Não o recomendo para programar, mas serve para estas coisinhas pequenas... 😉 Knowledge is free!
nunopicado Posted May 16, 2012 at 09:38 PM Report #456231 Posted May 16, 2012 at 09:38 PM Qual é que estavas a fazer download? Tenta este: http://sourceforge.net/projects/freepascal/files/latest/download?source=files "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.
Gnrtuga Posted May 16, 2012 at 09:39 PM Report #456232 Posted May 16, 2012 at 09:39 PM 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.. :)
nunopicado Posted May 16, 2012 at 09:42 PM Report #456233 Posted May 16, 2012 at 09:42 PM 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.
Gnrtuga Posted May 16, 2012 at 09:49 PM Report #456235 Posted May 16, 2012 at 09:49 PM 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.. :)
nunopicado Posted May 16, 2012 at 10:20 PM Report #456249 Posted May 16, 2012 at 10:20 PM (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 May 16, 2012 at 10:20 PM 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.
thoga31 Posted May 16, 2012 at 10:58 PM Author Report #456259 Posted May 16, 2012 at 10:58 PM 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!
thoga31 Posted October 14, 2012 at 09:35 PM Author Report #479166 Posted October 14, 2012 at 09:35 PM Após muitas modificações pelas quais a Wiki passou, finalmente pude disponibilizar o presente snippet na Wiki 😉 https://wiki.portugal-a-programar.pt/dev_geral/pascal/pronto-a-usar/sierpinski/ Knowledge is free!
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now