PIZiadas grafica

PIZiadas grafica

Il mio mondo è dentro.

Fractals ricorsive: Curva di Koch [JAVA]

curva-de-koch-triangulo-completo-150Abbiamo visto un primo programma chiamato “DrawWorld” abbiamo introdotto la grafica orientata programmazione Java. Este módulo de programación nos ha servido para ver un primer fractal recursivo: Dal Triangolo Sierpisnki.

Cambiamo questo programma di base per generare una nuova base ricorsiva frattale: Gli curva de Kuch.

(Vedere e la generazione di un frattale ricorsiva)

Es un fractal que se construye de forma recursiva a partir de una línea recta. Sus lados se dividen en tres partes iguales y el segmento central se cambia por dos iguales que forman 60 grados con los anteriores y entre si.

Gli curva di Koch, noto anche come fiocco è un frattale che può essere ottenuto con metodi diversi come cosiddetto IFS gli Sistemi di funzione iterato (deterministico nel), sistemi basati su regole, ecc.

Gli algoritmo ricorsivo ha anche il pregio di rappresentare un concetto strettamente connesso con i frattali: infinito. L'essenza della ricorsione per descrivere una forma molto semplice di curva stessa. Un universo che contiene un altro e questo a sua volta copia il modello su scala minore (così contrattile) una sequenza ripetendo all'infinito.

Koch curva appartiene alla auto-simile frattale[1], essere il metodo di ottenimento del deterministico.

curva-de-koch-0

Iniciador

curva-de-koch-1

Primera iteración

Dimensione Frattale

Gli dimensione un oggetto è collocato o concetto topologico che classifica gli oggetti spazi metrici. La nozione intuitiva di dimensioni intere spazi scontri con le cosiddette dimensioni frattali, prendendo i valori reali.

Gli Peano cagna è una curva capace di riempire. Avete quindi due dimensioni?, ci si chiede.

È associato ad una dimensione frattale di rugosità, la frammentazione, della stessa, in modo che una dimensione maggiore presentano un più ruvida o irregolare. In ogni caso dà informazioni sulla sua complessità caratterizzante.

Koch curva ha un rapporto s = 1/3, con n = 4, quindi la sua dimensione frattale è:

D=ln4/ln3 ~ 1.269

Si cada uno de estos nuevos segmentos se dividen de nuevo de forma recursiva se obtiene la curva de Hoch

curva-de-koch-2

curva de koch para n=2

.

curva de koch para n=3

curva de koch para n=3

curva de koch para n=4

curva de koch para n=4

Si usamos tres líneas, en lugar de una como iniciador, en forma de triángulo equilátero aparecerá la clásica forma de copo de nieve, nombre con el que se conoce a esta configuración del fractal.

curva-de-koch-triangulo

curva de koch : fiocco di neve

Algoritmo generador

Abbiamo definito una funzione “paintRecursivo” (Ho chiamato dal metodo “dipingere”) a la que pasamos los puntos de la línea o líneas del triángulo, e la ricorsione. La función calcula los vértices de los nuevos segmentos, pinta la figura y se llama a sí misma de nuevo reduciendo el nivel de recursividad.

Pertanto, en cada llamada a la función se reduce el valor de recursividad, in modo che quando si tratta di finiture a zero portando ricorsione.

importare java.applet.Applet;
importare java.awt.Graphics;
/**
* @ Autore José Juan Aliaga
*/
pubblico classe MainApp estende Applet {
 raddoppiare XP1 = 300;
 raddoppiare YP1 = 300;
 raddoppiare XP2 = 10;
 raddoppiare yp2 = 300;
 raddoppiare sin60 = Math.sin(3.14/3.);
 int nivel_de_recursividad = 6;

 pubblico MainApp() { }

 pubblico statica invalidare principale(Stringa[] args) { }

 public void dipingere(Graphics g){
   paintRecursivo(g,nivel_de_recursividad,XP1, YP1, XP2, yp2);
 }

 private void paintRecursivo(Graphics g, int i, raddoppiare XP12, raddoppiare yp12, raddoppiare Xp22, raddoppiare yp22 ) {
 raddoppiare dx =(Xp22-XP12)/3.;
 raddoppiare due =(yp22-yp12)/3.;
 raddoppiare xx=xp12 3*dx/2.-dy*sin60;
 raddoppiare yy=yp12 3*dy/2. dx*sin60;
 se(i<= 0){
      g.drawLine((int)XP12,(int)yp12,(int)Xp22,(int)yp22);
 }
 altro{
     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

Corso JAVA