Ciência da Computação - PUC PR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Árvore Fractal

4 participantes

Ir para baixo

Árvore Fractal Empty Árvore Fractal

Mensagem  Mattioli Sáb maio 07, 2011 10:06 am

Estava procurando alguns códigos pra gerar fractais, e achei algo que pode deixar algumas pessoas se perguntando: "Mas como isso funciona?"

Só esclarecendo, não fui eu que fiz o código, o encontrei por acaso, resolvi testá-lo e realmente funciona.

Segue árvore fractal em PROLOG:

Código:
fractal :-
   new(D, window('Fractal')),
   send(D, size, size(800, 600)),
   drawTree(D, 400, 500, -90, 9),
   send(D, open).


drawTree(_D, _X, _Y, _Angle, 0).

drawTree(D, X1, Y1, Angle, Depth) :-
        X2 is X1 + cos(Angle * pi / 180.0) * Depth * 10.0,
        Y2 is Y1 + sin(Angle * pi / 180.0) * Depth * 10.0,
   new(Line, line(X1, Y1, X2, Y2, none)),
   send(D, display, Line),
   A1 is Angle - 30,
   A2 is Angle + 30,
   De is Depth - 1,
        drawTree(D, X2, Y2, A1, De),
        drawTree(D, X2, Y2, A2, De).
Para os que não lembram como Prolog funciona, ou ainda não viram, é só chamar o:
Código:
?- emacs.
Colar o código passado acima, e chamar:
Código:
?- fractal.
Uma janela mágica do XPCE irá pular na sua frente com a árvore lindamente desenhada!
Mattioli
Mattioli
Moderador

Mensagens : 37
Data de inscrição : 06/05/2011
Idade : 34
Localização : Prontera

Ir para o topo Ir para baixo

Árvore Fractal Empty Re: Árvore Fractal

Mensagem  Mattioli Sáb maio 07, 2011 10:11 am

Para quem curtiu o resultado e não entendeu nécas do que aconteceu, achei um código em HTML5 em conjunto com CANVAS que gera aparentemente o mesmo resultado, segue código:
Código:
<html>
<body>
<canvas id="canvas" width="600" height="500"></canvas>
<script type="text/javascript">
var elem = document.getElementById('canvas');
var context = elem.getContext('2d');
 
context.fillStyle  = '#000';
context.lineWidth  = 1;
 
var deg_to_rad = Math.PI / 180.0;
var depth = 9;
 
function drawLine(x1, y1, x2, y2, brightness){
   context.moveTo(x1, y1);
   context.lineTo(x2, y2);
}
function drawTree(x1, y1, angle, depth){
   if (depth != 0){
      var x2 = x1 + (Math.cos(angle * deg_to_rad) * depth * 10.0);
      var y2 = y1 + (Math.sin(angle * deg_to_rad) * depth * 10.0);
      drawLine(x1, y1, x2, y2, depth);
      drawTree(x2, y2, angle - 20, depth - 1);
      drawTree(x2, y2, angle + 20, depth - 1);
   }
}
context.beginPath();
drawTree(300, 500, -90, depth);
context.closePath();
context.stroke();
</script>
</body>
</html>
Mattioli
Mattioli
Moderador

Mensagens : 37
Data de inscrição : 06/05/2011
Idade : 34
Localização : Prontera

Ir para o topo Ir para baixo

Árvore Fractal Empty Re: Árvore Fractal

Mensagem  PamNawi Sáb maio 07, 2011 12:28 pm

Prolog you scare me!!!!

Acho que vale a explicação do que são fractais né?
Segundo a mãe wikipédia:

Um fractal (anteriormente conhecido como curva monstro) é um objeto geométrico que pode ser dividido em partes, cada uma das quais semelhante ao objeto original. Diz-se que os fractais têm infinitos detalhes, são geralmente autossimilares e independem de escala. Em muitos casos um fractal pode ser gerado por um padrão repetido, tipicamente um processo recorrente ou iterativo.

Um utilidade além de gerar imagens bonitas (gays):
Os meteorologistas utilizam o cálculo fractal para verificar as turbulências da atmosfera incluindo dados como nuvens, montanhas, a própria turbulência, os litorais, e árvores. As técnicas fractais também estão sendo empregadas para a compactação de imagens através da compressão fractal, além das mais diversas disciplinas científicas que utilizam o processo.
PamNawi
PamNawi
Moderador

Mensagens : 48
Data de inscrição : 06/05/2011
Idade : 32
Localização : Curitiba

Ir para o topo Ir para baixo

Árvore Fractal Empty Re: Árvore Fractal

Mensagem  N-Moya Sáb maio 07, 2011 7:14 pm

Tem como postar uma screenshot do resultado?

Não tenho mais o Prolog instalado =/

Ele não é compatível com a versão do meu cérebro...

N-Moya
Moderador

Mensagens : 31
Data de inscrição : 06/05/2011
Idade : 32
Localização : Ponto de cruzamento de duas retas paralelas

Ir para o topo Ir para baixo

Árvore Fractal Empty Re: Árvore Fractal

Mensagem  PamNawi Dom maio 08, 2011 1:43 am

N-Moya escreveu:Tem como postar uma screenshot do resultado?

Não tenho mais o Prolog instalado =/

Ele não é compatível com a versão do meu cérebro...

Esse povo que desinstalam tudo.
O resultado do algoritmo:
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]

PamNawi
PamNawi
Moderador

Mensagens : 48
Data de inscrição : 06/05/2011
Idade : 32
Localização : Curitiba

Ir para o topo Ir para baixo

Árvore Fractal Empty Re: Árvore Fractal

Mensagem  N-Moya Dom maio 08, 2011 2:52 am

Parecem brônquios. Informágica!


N-Moya
Moderador

Mensagens : 31
Data de inscrição : 06/05/2011
Idade : 32
Localização : Ponto de cruzamento de duas retas paralelas

Ir para o topo Ir para baixo

Árvore Fractal Empty Re: Árvore Fractal

Mensagem  PamNawi Dom maio 08, 2011 12:06 pm

N-Moya escreveu:Parecem brônquios. Informágica!


Brônquios são representantes dos fractais...
PamNawi
PamNawi
Moderador

Mensagens : 48
Data de inscrição : 06/05/2011
Idade : 32
Localização : Curitiba

Ir para o topo Ir para baixo

Árvore Fractal Empty Re: Árvore Fractal

Mensagem  Mattioli Dom maio 08, 2011 1:36 pm

PamNawi escreveu:
N-Moya escreveu:Parecem brônquios. Informágica!


Brônquios são representantes dos fractais...

Ou Dendritos e Terminais do Axônio dos neurônios... =)

Segue imagem:
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
(Imagem retirada do site: [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
São (respectivamente) os números 7 e 8.


Última edição por Mattioli em Ter maio 24, 2011 12:14 am, editado 1 vez(es)
Mattioli
Mattioli
Moderador

Mensagens : 37
Data de inscrição : 06/05/2011
Idade : 34
Localização : Prontera

Ir para o topo Ir para baixo

Árvore Fractal Empty Re: Árvore Fractal

Mensagem  N-Moya Dom maio 08, 2011 3:29 pm

Prolog faz fractal
Neurônios são fractais.


Fazendo as deduções:
Logo,
Neurônios foram feitos em Prolog.
=]

logica++;

N-Moya
Moderador

Mensagens : 31
Data de inscrição : 06/05/2011
Idade : 32
Localização : Ponto de cruzamento de duas retas paralelas

Ir para o topo Ir para baixo

Árvore Fractal Empty Re: Árvore Fractal

Mensagem  unclelobs Dom maio 08, 2011 10:26 pm

N-Moya escreveu:Prolog faz fractal
Neurônios são fractais.


Fazendo as deduções:
Logo,
Neurônios foram feitos em Prolog.
=]

logica++;

void BCC( Vestibulando aluno )
{
do
{
aluno.abstracao++;
aluno.realidade--;
}while( aluno.realidade>0 && aluno.formado == false );

formado ? free(aluno) : aluno.suicide();

}

BCC(&this);


ein, essa parada é do pibic de algum de vocês? nunca ouvi falar...
unclelobs
unclelobs
Calouro

Mensagens : 9
Data de inscrição : 06/05/2011
Idade : 35
Localização : Cwb

Ir para o topo Ir para baixo

Árvore Fractal Empty Re: Árvore Fractal

Mensagem  PamNawi Dom maio 08, 2011 10:39 pm

unclelobs escreveu:
N-Moya escreveu:Prolog faz fractal
Neurônios são fractais.


Fazendo as deduções:
Logo,
Neurônios foram feitos em Prolog.
=]

logica++;

void BCC( Vestibulando aluno )
{
do
{
aluno.abstracao++;
aluno.realidade--;
}while( aluno.realidade>0 && aluno.formado == false );

formado ? free(aluno) : aluno.suicide();

}

BCC(&this);


ein, essa parada é do pibic de algum de vocês? nunca ouvi falar...


Então apenas nerdices... nada de pibic ou algo do genero XD
PamNawi
PamNawi
Moderador

Mensagens : 48
Data de inscrição : 06/05/2011
Idade : 32
Localização : Curitiba

Ir para o topo Ir para baixo

Árvore Fractal Empty Re: Árvore Fractal

Mensagem  Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo


 
Permissões neste sub-fórum
Não podes responder a tópicos