import sk.upjs.jpaz2.Turtle;
public class Fraktalka extends Turtle {
/**
* Nakresli Kochovu krivku zadanej urovne a dlzky
*
* @param u
* uroven Kochovej krivky
* @param d
* dlzka Kochovej krivky
*/
public void kochovaKrivka(int u, double d) {
if (u == 0) {
// Trivialny pripad/baza rekurzie
this.step(d);
} else {
// Rekurzivne vnorenia
this.kochovaKrivka(u - 1, d / 3);
this.turn(-60);
this.kochovaKrivka(u - 1, d / 3);
this.turn(120);
this.kochovaKrivka(u - 1, d / 3);
this.turn(-60);
this.kochovaKrivka(u - 1, d / 3);
}
}
/**
* Nekonecna Kochova krivka - utvary dlzky mensej ako 1 pixel nekreslime
*
* @param d
* dlzka Kochovej krivky
*/
public void kochovaKrivka(double d) {
if (d < 1) {
// Trivialny pripad/baza rekurzie
this.step(d);
} else {
// Rekurzivne vnorenia
this.kochovaKrivka(d / 3);
this.turn(-60);
this.kochovaKrivka(d / 3);
this.turn(120);
this.kochovaKrivka(d / 3);
this.turn(-60);
this.kochovaKrivka(d / 3);
}
}
/**
* Sierpniskeho trojuholnik
*
* @param u
* uroven Sierpinskeho trojuholnika (pocet rekurzivnych vnoreni)
*
* @param d
* dlzka strany Sierpinskeho trojuholnika
*/
public void sierpinski(int u, double d) {
// Trivialny pripad/baza rekurzie
if (u == 0) {
return;
}
// Rekurzivne vnorenia
for (int i = 0; i < 3; i++) {
this.sierpinski(u - 1, d / 2);
this.step(d);
this.turn(120);
}
}
}