Java & JavaScript


Home
Applets
   3D:
 · Würfel
 · Würfel 2
 · Würfel 3
 · Tetraeder
 · Tetraeder 2
 · Dodekaeder
 · Ikosaeder
 · Fußball
 · Kugel
 · Kugel 2
   Fraktale:
 · Apfelmännchen
 · Apfelmännchen 2
 · Apfelmännchen 3
 · Apfelmännchen MA
 · Apfelmännchen Zoom
 · Apfelmännchen Zoom 2
 · Juliamenge
 · Juliamenge MA
 · Julia-Generator
 · Koch-Kurve
 · Koch-Kurve 2
 · Hilbert-Kurve
 · Sierpinski-Dreieck
 · Sierpinski-Dreieck 2
 · Sierpinski-Dreieck 3
 · Sierpinski-Teppich
 · Pythagoras-Baum
 · Lindenmayer-System
 · Lindenmayer-System 2
   Mathematik:
 · Funktionsplotter
 · Eratosthenes-Sieb
 · Miller-Rabin-Test
   Verschiedenes:
 · Morsezeichen-Ticker
 · Analoguhr
Scripts
Gäste
Kontakt

- Applets : Fraktale : Koch-Kurve -


Die fraktale Koch-Kurve als Java-Applet.

Mehr Zacken mit linkem Mausklick - Weniger mit rechtem Mausklick.

[Die fraktale Koch-Kurve als Java-Applet mit Quellcode zum Download. Das Applet der Koch-Kurve lässt sich allerdings nur mit aktiviertem Java betrachten !]

Die Koch-Kurve (auch Schneeflockenkurve oder kochsche Insel). Nach Helge von Koch, schwed. Mathematiker, 1870-1924


KochKurve.java

import java.applet.*;
import java.awt.*;

public class KochKurve extends Applet {

  int level = 3;

  public void init() {
    setBackground(new Color(255,255,255));
  }

  public boolean mouseDown(Event ev, int x, int y) {
    if (!ev.metaDown()) level += 1;
    else if (level>1) level -= 1;
    repaint();
    return true;
  }

  public void paint(Graphics g) {
    drawCurve(g,10,130,0,400,level); // Startwerte
  }

  private void drawCurve(Graphics g, double x1, double y1,
        double angle1, double sideLength, int level) {

    // (x1,y1), (x2,y2), (x3,y3), (x4,y4) = Startpunkte für die Teilstrecken
    // sideLength = Länge einer Teilstrecke
    // angle = Winkel zwischen den Teilstrecken
    // Jede Teilstrecke wird eindeutig durch einen Startpunkt,
    // einen Winkel und eine Länge definiert
    // Anzahl der Teilstrecken = 4^(level-1), level 1 = gerade Linie

    double x2, y2, angle2, x3, y3, angle3, x4, y4;

    if (level>1) {
      // Übergebene Teilstrecke in vier neue Teilstrecken zerlegen

      sideLength /= 3;
      level -= 1;

      // erste Teilstrecke
      drawCurve(g, x1,y1, angle1, sideLength, level);

      // zweite Teilstrecke
      x2 = x1+sideLength*Math.cos(angle1);
      y2 = y1+sideLength*Math.sin(angle1);
      angle2 = angle1-Math.PI/3;
      drawCurve(g, x2,y2, angle2, sideLength, level);

      // dritte Teilstrecke
      x3 = x2+sideLength*Math.cos(angle2);
      y3 = y2+sideLength*Math.sin(angle2);
      angle3 = angle1+Math.PI/3;
      drawCurve(g, x3,y3, angle3, sideLength, level);

      // vierte Teilstrecke
      x4 = x3+sideLength*Math.cos(angle3);
      y4 = y3+sideLength*Math.sin(angle3);
      // angle4 = angle1
      drawCurve(g, x4,y4, angle1, sideLength, level);
    }
    else {
      // Teilstrecke zeichnen
      g.drawLine((int)x1,(int)y1,
          (int)(x1+sideLength*Math.cos(angle1)),(int)(y1+sideLength*Math.sin(angle1)));
    }
  }
}


Eigentlich wollte Helge von Koch 1904 nur eine Kurve beschreiben, die, obwohl sie fast überall stetig ist, an keiner Stelle eine Tangente besitzt, und damit auch nicht differenzierbar ist. Erst 1975 führte Mandelbrot für ein solches Gebilde den Begriff 'Fraktal' ein. Zu Kochs Zeiten sprach man bei Kurven und Funktionen mit den genannten Eigenschaften noch von mathematischen 'Monstern' oder 'Monsterkurven'.



Niels Fabian Helge von Koch

(Helge von Koch)


Download  Koch_Kurve.zip (Applet und Code ca. 2 kb)




© 2001-2004 Albert Kluge - Alle Rechte vorbehalten
Impressum | Datenschutz | Nutzung | eMail