PIZiadas gráficos

PIZiadas gráficos

Meu mundo está dentro.

Fractals recursivas: Curva de Koch [JAVA]

curva-de-koch-triangulo-completo-150Vimos um primeiro programa chamado “DrawWorld” que introduziu os gráficos orientados de programação Java. Programação Este módulo tem nos ajudado a ver um primeiro recursiva fractal: De Triângulo Sierpisnki.

Vamos mudar este programa básico para gerar um novo recursiva fractal básico: O curva de Kuch.

(Ver e geração de um fractal recursiva)

É um fractal que é construído de forma recursiva a partir de uma linha reta. Os seus lados são divididos em três partes iguais e o segmento central é alterada por duas formador igual 60 graus entre o anterior e se.

O curva de Koch, também conhecido como floco de neve é ​​um fractal que pode ser obtido por diferentes métodos como os chamados IFS ou Sistemas funcionam iteradas (deterministas o no), sistemas baseados em regras, etc.

O algoritmo recursivo tem também a virtude de representar um conceito intimamente associado com fractais: infinito. A essência da recursão para descrever uma forma muito simples de a própria curva. Um universo que contém o outro e este por sua vez copiar o padrão em uma escala menor (tão contracionista) uma seqüência infinita repetição.

Koch curva pertence ao auto-similar fractal[1], ser o método de obtenção do determinista.

curva-de-koch-0

Iniciador

curva-de-koch-1

Primeira iteração

Dimensão Fractal

O dimensão um objeto é colocado ou conceito topológico que classifica objetos espaços métricos. A noção intuitiva de dimensões inteiras espaços confrontos com os chamados dimensões fractais, tomando valores reais.

O Peano cadela é uma curva capaz de encher. Você tem, portanto, duas dimensões?, uma maravilhas.

Está associada a uma dimensão fractal de rugosidade, a fragmentação, disso, de modo que uma dimensão maior apresentar uma mais áspera ou irregular. Em qualquer caso, dá informação sobre a sua complexidade caracterizando.

Koch curva tem um rácio s = 1/3, com n = 4, pelo que a sua dimensão fractal é:

D = ln4/ln3 ~ 1.269

Se cada um dos novos segmentos são novamente divididos recursivamente curva obtida Hoch

curva-de-koch-2

curva de koch parágrafo n = 2

.

curva de koch para n=3

curva de Koch parágrafo n = 3

curva de koch para n=4

curva de Koch parâmetros n = 4

Se usarmos três linhas, em vez de um como um iniciador, formulário em forma de triângulo equilátero aparece floco de neve clássico, nome com que esta configuração é conhecida fractal.

curva-de-koch-triangulo

curva de koch : floco de neve

Algoritmo do gerador

Nós definimos uma função “paintRecursivo” (I chamado a partir do método “pintar”) Passei os pontos da linha ou linhas do triângulo, ea recursão. A função calcula os vértices dos novos segmentos, pinta a figura e pede-se novamente a redução da recursão.

Portanto, em cada chamada à função reduz o valor da recursão, de modo que, quando é concluída a zero levando recursão.

importar java.applet.Applet;
importar java.awt.Graphics;
/**
* @ Autor José Juan Aliaga
*/
público classe MainApp estende-se Applet {
 dobrar xp1 = 300;
 dobrar YP1 = 300;
 dobrar XP2 = 10;
 dobrar yp2 = 300;
 dobrar sin60 = Math.sin(3.14/3.);
 int nivel_de_recursividad = 6;

 público MainApp() { }

 público estático invalidar principal(Corda[] args) { }

 public void pintar(Graphics g){
   paintRecursivo(g,nivel_de_recursividad,xp1, YP1, XP2, yp2);
 }

 private void paintRecursivo(Graphics g, int Eu, dobrar xp12, dobrar yp12, dobrar Xp22, dobrar yp22 ) {
 dobrar dx =(Xp22-xp12)/3.;
 dobrar dois =(yp22-yp12)/3.;
 dobrar xx = xp12 3 * dx2dy * sin60;
 dobrar yy = yp12 3 * dy / dx 2   * sin60;
 se(Eu<= 0){
      g.drawLine((int)xp12,(int)yp12,(int)Xp22,(int)yp22);
 }
 outro{
     paintRecursivo(g,i-1, xp12, yp12, xp12   dx,yp12 dy);
     paintRecursivo(g,i-1, xp12   dx,yp12 dy,xx,yy);
     paintRecursivo(g,i-1, xx,yy,Xp22-dx,yp22-dy);
     paintRecursivo(g,i-1, Xp22-dx,yp22-dy,Xp22, yp22);
 }
} }
JAVA

Curso JAVA