Turtlegrafik für Smartphones und Tablets

Entwicklungsprojekt PHBern  
HomeOnline-Editor startenDruckenAndroid GamesJava-Online

Einige bekannte Rekursionen

Peano

Source mit Online-Compiler bearbeiten

App installieren auf Smartphone oder Tablet

QR-Code

Sources downloaden (Peano.zip)

// Peano.java

package app.peano;

import turtle.*;

public class Peano extends Playground
{
  public void main()
  {
    peano(5, 5, 90);
  }

  void peano(int n, int s, int w)
  {
    if (n == 0)
      return;
    lt(w);
    peano(n - 1, s, -w);
    fd(s);
    rt(w);
    peano(n - 1, s, w);
    fd(s);
    peano(n - 1, s, w);
    rt(w);
    fd(s);
    peano(n - 1, s, -w);
    lt(w);
  }
}
 


Sirpinski

Source mit Online-Compiler bearbeiten

App installieren auf Smartphone oder Tablet

QR-Code

Sources downloaden (Sierpi.zip)

// Sierpi.java

package app.sierpi;

import turtle.*;

public class Sierpi extends Playground
{
  public void main()
  {
    int = 4;
    int = 256;
    setPos( -180-190);
    rt(90);
    sierpi(n, s);
  }

  void sierpi(int n, int s)
  {
    if (n == 0)
    {
      triangle(s);
      return;
    }
    else
    {
      sierpi(n - 1, s / 2);
      fd(s / 2);
      sierpi(n - 1, s / 2);
      lt(120);
      fd(s / 2);
      rt(120);
      sierpi(n - 1, s / 2);
      lt(60);
      bk(s / 2);
      rt(60);
    }
  }

  void triangle(int s)
  {
    for (int = 0; i < 3; i++)
    {
      fd(s);
      lt(120);
    }
    fill(getX() + 3, getY() + 3);
  }
}
 


Dragon

Source mit Online-Compiler bearbeiten

App installieren auf Smartphone oder Tablet

QR-Code

Sources downloaden (Peano.zip)

// Dragon.java

package app.dragon;

import turtle.*;

public class Dragon extends Playground
{
  // int nbGenerations = 15;
  int nbGenerations = 9;

  public void main()
  {
    rt(90);
    setPos(-100, 100);
    figure(250, nbGenerations, true);
  }

  void figure(double length, int n, boolean inverse)
  {
    if (n == 0)
      fd(length);
    else
    {
      int alpha = 45;
      if (inverse)
      {
        alpha = -alpha;
        inverse = !inverse;
      }
      lt(alpha);
      figure(length / Math.sqrt(2), n - 1, !inverse);
      rt(2 * alpha);
      figure(length / Math.sqrt(2), n - 1, inverse);
      lt(alpha);
    }
  }

}
 


Koch

Source mit Online-Compiler bearbeiten

App installieren auf Smartphone oder Tablet

QR-Code

Sources downloaden (Koch.zip)

// Koch.java

package app.koch;

import turtle.*;

public class Koch extends Playground
{
  float length = 200;
  int generations = 4;

  public void main()
  {
    setPos(-180, 0);
    ht();
    rt(90);
    koch(length, generations);
  }

  void koch(double l, int n)
  {
    if (n == 0)
    {
      fd(l);
      return;
    }
    koch(l / 3, n - 1);
    lt(45);
    koch(l / 3, n - 1);
    rt(90);
    koch(l / 3, n - 1);
    lt(45);
    koch(l / 3, n - 1);
  }
}
 
     


Menger

Source mit Online-Compiler bearbeiten

App installieren auf Smartphone oderTablet

QR-Code

Sources downloaden (Menger.zip)

// Menger.java

package app.menger;

import turtle.*;

public class Menger extends Playground
{
  public void main()
  {
    pu().bk(120).lt(90).bk(50).rt(90).pd();
    menger(3, 81 * 2);
  }

  void menger(int n, double size)
  {
    if (n > 0)
    {
      menger(n - 1, size / 3);
      pu().lt(90).fd(size / 3).rt(90).pd();
      menger(n - 1, size / 3);
      pu().lt(90).fd(size / 3).rt(90).pd();
      menger(n - 1, size / 3);
      pu().fd(size / 3).pd();
      menger(n - 1, size / 3);
      pu().fd(size / 3).pd();
      menger(n - 1, size / 3);
      pu().lt(90).bk(size / 3).rt(90).pd();
      menger(n - 1, size / 3);
      pu().lt(90).bk(size / 3).rt(90).pd();
      menger(n - 1, size / 3);
      pu().bk(size / 3).pd();
      menger(n - 1, size / 3);
      pu().bk(size / 3).pd();
    }
    else
    {
      for (int = 0; i < 4; i++)
      {
        fd(size).lt(90);
      }
    }
  }
}
 
     
     


Treefractal

Source mit Online-Compiler bearbeiten

App installieren auf Smartphone oderTablet

QR-Code

Sources downloaden (Treefractal.zip)

// Treefractal.java

package app.treefractal;

import turtle.*;

public class Treefractal extends Playground
{
  public void main()
  {
    setPos(50, -200);
    tree(300);
  }

  private void tree(double size)
  {
    if (size < 8)
    {
      fd(size);
      bk(size);
      return;
    }
    fd(size / 3);
    lt(30);
    tree(size * / 3);
    rt(30);
    fd(size / 6);
    rt(25);
    tree(size / 2);
    lt(25);
    fd(size / 3);
    rt(25);
    tree(size / 2);
    lt(25);
    fd(size / 6);
    bk(size);
  }
}