PIZiadas Γράφημα

PIZiadas Γράφημα

Ο κόσμος μου είναι μέσα.

Αναδρομικές Fractals: Curva de Koch [JAVA]

curva-de-koch-triangulo-completo-150Είδαμε ένα πρώτο πρόγραμμα που ονομάζεται “DrawWorld” την εισαγωγή μας στα προγραμματισμού προσανατολισμένη γραφικά JAVA. Αυτή η ενότητα του προγραμματισμού μας βοήθησε να δούμε πρώτα φράκταλ αναδρομικές: El triángulo de Sierpisnki.

Veamos como modificar este programa elemental para generar un nuevo fractal recursivo básico: Ο curva de Kuch.

(Ver como se genera un fractal recursivo)

Είναι ένα fractal που είναι χτισμένο αναδρομικά από μια ευθεία γραμμή. Οι πλευρές του χωρίζεται σε τρία ίσα μέρη και το κεντρικό τμήμα έχει αλλάξει με τον σχηματισμό δύο ίσα 60 βαθμούς με την προηγούμενη και κάθε.

Ο Curva de Koch, επίσης γνωστή ως νιφάδα είναι μια φράκταλ που μπορεί να ληφθούν με διαφορετικές διαδικασίες, όπως γνωστές IFS ο λειτουργίες των συστημάτων επαναληπτικού (ντετερμινιστικό στην), συστήματα αποφανθεί με βάση, κλπ..

Ο αναδρομικό αλγόριθμο έχει η αρετή του να αντιπροσωπεύει επίσης μια έννοια στενά συνδεδεμένη με fractals: άπειρο. Η ουσία της αναδρομής επιτρέπει να περιγράψει σε μια πολύ απλή μορφή της ίδιας της καμπύλης. Ένα σύμπαν που περιέχει ένα άλλο και αυτό με τη σειρά του να αντιγράψετε το μοτίβο σε μικρότερη κλίμακα (τόσο συσταλτική) σε μια αλληλουχία που επαναλαμβάνεται απείρως.

Η καμπύλη Koch ανήκει στην ομάδα των αυτο-ομοιότητας fractal[1], είναι η μέθοδος απόκτησης την αιτιοκρατική.

curva-de-koch-0

Ιδρυτή

curva-de-koch-1

Πρώτη επανάληψη

Fractal διάσταση

Ο διάσταση ενός αντικειμένου είναι μια τοπολογική έννοια που τοποθετεί ή ταξινομεί αντικείμενα μετρικούς χώρους. Η διαισθητική αντίληψη των χώρων με όλη διαστάσεις συγκρούεται με τα λεγόμενα φράκταλ διαστάσεις, λαμβάνοντας πραγματικές τιμές.

Ο Peano πόρνη είναι ικανή κυρτό επίπεδο πλήρωσης. Έχοντας λοιπόν δύο διαστάσεις?, αναρωτιέται κανείς.

Η διάσταση ενός φράκταλ συνδέεται με την τραχύτητα, ο κατακερματισμός, Εκτιμώντας, έτσι ώστε ένα μεγαλύτερο παρόν μια πιο τραχιά ή τσαλακωμένα. Σε κάθε περίπτωση, χαρακτηρίζουν δίνει πληροφορίες σχετικά με την πολυπλοκότητα του.

Καμπύλη Koch έχει λόγο s = 1/3, με n = 4, Ως εκ τούτου, fractal διάσταση είναι:

D = ln4 / Ln3 ~ 1.269

Εάν κάθε ένα από αυτά τα νέα τμήματα χωρίζονται και πάλι αναδρομικά καμπύλη λαμβάνεται Hoch

curva-de-koch-2

curva de Koch παρ n = 2

.

curva de koch para n=3

curva de Koch παρ n = 3

curva de koch para n=4

curva de Koch παρ n = 4

Αν χρησιμοποιήσουμε τρεις γραμμές, αντί ενός εκκινητή, Φαίνεται ισόπλευρο τρίγωνο σχήμα κλασικό νιφάδα χιονιού, όνομα που είναι γνωστό ότι αυτό το Fractal διαμόρφωση.

curva-de-koch-triangulo

curva de Koch : νιφάδα χιονιού

Αλγόριθμο Γεννήτρια

Se ha definido una función “paintRecursivo” (que se llama desde el método “paint”) περάσαμε τα σημεία της γραμμής ή γραμμών του τριγώνου, así como el nivel de recursividad. Η λειτουργία υπολογίζει τις κορυφές των νέων τμημάτων, Χρώματα σχήμα και την ίδια Ζητά εκ νέου τη μείωση του επιπέδου της αναδρομής.

Por lo tanto, κάθε κλήση συνάρτησης αξίας αναδρομή μειώνεται, de forma que cuando éste es cero termina de efectuar la recursividad.

import java.applet.Applet;
import java.awt.Graphics;
/**
* @author José Juan Aliaga
*/
public class MainApp extends Applet {
 double xp1=300;
 double yp1=300;
 double xp2=10;
 double yp2=300;
 double sin60=Math.sin(3.14/3.);
 int nivel_de_recursividad=6;

 public MainApp() { }

 public static void main(String[] args) { }

 public void paint(Graphics g){
   paintRecursivo(g,nivel_de_recursividad,xp1,yp1,xp2,yp2);
 }

 private void paintRecursivo(Graphics g, int i, double xp12, double yp12, double xp22, double yp22 ) {
 double dx=(xp22-xp12)/3.;
 double dy=(yp22-yp12)/3.;
 double xx = xp12 + 3 * dx / dy 2.-sin60 *;
 double εε = yp12 + 3 * dy / dx + 2. * sin60;
 if(i<=0){
      g.drawLine((int)xp12,(int)yp12,(int)xp22,(int)yp22);
 }
 else{
     paintRecursivo(g,i-1, xp12, yp12, xp12 + dx,yp12+dy);
     paintRecursivo(g,i-1, xp12 + dx,yp12+dy,xx,εε);
     paintRecursivo(g,i-1, xx,εε,xp22-DX,yp22-dy);
     paintRecursivo(g,i-1, xp22-dx,yp22-dy,xp22,yp22);
 }
} }
JAVA

Curso JAVA