Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sk.upjs.jpaz2.JPAZUtilities;
- import sk.upjs.jpaz2.Turtle;
- import sk.upjs.paz.calltree.CallTree;
- public class fraktalka extends Turtle {
- public void hexagonAmmann(int u, double d) {
- double psi = Math.sqrt((Math.sqrt(5) - 1) / 2);
- if (u > 0) {
- vykresliSomarinu(d, psi);
- velkaRekurzia(u-1, d, psi, 2);
- this.turn(90);
- this.step(d * Math.pow(psi, 4));
- this.step(d * Math.pow(psi, 2));
- this.turn(90);
- malaRekurzia(u-3, d, psi, 3);
- }
- }
- public void velkaRekurzia(int u, double d, double p, int mocnina) {
- if (u > 0) {
- vykresliMensiuSomarinu(d, p, mocnina);
- velkaRekurzia(u-1, d, p, mocnina+1);
- if(u > 1){
- this.turn(90);
- }
- this.step(d * Math.pow(p, mocnina-1));
- this.malaRekurzia(u-3, d, p, mocnina+2);
- }
- }
- public void malaRekurzia(int u, double d, double p, int mocnina) {
- JPAZUtilities.delay(1500);
- if (u > 0) {
- this.turn(90);
- if(u==1){
- this.turn(-90);
- }
- vykresliEsteMensiuSomarinu(d, p, mocnina);
- malaRekurzia(u-1, d, p, mocnina+1);
- JPAZUtilities.delay(1500);
- this.turn(90);
- this.step(d*Math.pow(p, mocnina+2));
- this.step(d*Math.pow(p, mocnina+4));
- this.turn(90);
- this.velkaRekurzia(u-2, d, p, mocnina+2);
- }
- }
- // vykresli jeden kokot a vrati sa na zaciatok
- private void vykresliSomarinu(double a, double p) {
- this.step(a * Math.pow(p, 4));
- this.step(a * Math.pow(p, 2));
- this.turn(90);
- this.step(a * Math.pow(p, 3));
- this.turn(90);
- this.step(a * Math.pow(p, 4));
- this.turn(-90);
- this.step(a * Math.pow(p, 5));
- this.turn(90);
- this.step(a * Math.pow(p, 2));
- this.turn(90);
- this.step(a * p);
- this.turn(90);
- }
- private void vykresliMensiuSomarinu(double a, double p, int m) {
- this.step(a * Math.pow(p, m+2));
- this.turn(90);
- this.step(a * Math.pow(p, m+3));
- this.turn(-90);
- this.step(a * Math.pow(p, m+4));
- this.turn(90);
- this.step(a * Math.pow(p, m+5));
- this.step(a * Math.pow(p, m+3));
- this.turn(90);
- this.step(a * Math.pow(p, m));
- this.turn(90);
- }
- private void vykresliEsteMensiuSomarinu(double a, double p, int m){
- this.step(a * Math.pow(p, m));
- this.turn(90);
- this.step(a * Math.pow(p, m+1));
- this.turn(90);
- this.step(a * Math.pow(p, m+2));
- this.turn(90);
- this.step(a * Math.pow(p, m+5));
- this.turn(-90);
- this.step(a * Math.pow(p, m+4));
- this.turn(90);
- this.step(a * Math.pow(p, m+3));
- this.turn(90);
- this.step(a * Math.pow(p, m));
- this.turn(90);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement