diff --git a/04/src/main/java/ch/zhaw/ads/HilbertServer.java b/04/src/main/java/ch/zhaw/ads/HilbertServer.java new file mode 100644 index 0000000..0ce23f1 --- /dev/null +++ b/04/src/main/java/ch/zhaw/ads/HilbertServer.java @@ -0,0 +1,31 @@ +package ch.zhaw.ads; + +public class HilbertServer implements CommandExecutor { + Turtle turtle; + + @Override + public String execute(String command) { + int depth = Integer.parseInt(command); + double dist = 0.8 / (Math.pow(2,depth+1)-1); + turtle = new Turtle(0.1, 0.1); + hilbert(depth, dist, -90); + return turtle.getTrace(); + } + + private void hilbert(int depth, double dist, double angle) { + if (depth >= 0) { + turtle.turn(-angle); + hilbert(depth-1, dist, -angle); + turtle.move(dist); + turtle.turn(angle); + hilbert(depth-1, dist, angle); + turtle.move(dist); + hilbert(depth-1, dist, angle); + turtle.turn(angle); + turtle.move(dist); + hilbert(depth-1, dist, -angle); + turtle.turn(-angle); + } + } + +} diff --git a/04/src/main/java/ch/zhaw/ads/SnowflakeServer.java b/04/src/main/java/ch/zhaw/ads/SnowflakeServer.java new file mode 100644 index 0000000..f152ac3 --- /dev/null +++ b/04/src/main/java/ch/zhaw/ads/SnowflakeServer.java @@ -0,0 +1,35 @@ +package ch.zhaw.ads; + +public class SnowflakeServer implements CommandExecutor { + Turtle turtle; + + @Override + public String execute(String command) { + int n = Integer.parseInt(command); + turtle = new Turtle(); + + snowflake(Integer.parseInt(command), 0.8); + turtle.turn(-120); + snowflake(Integer.parseInt(command), 0.8); + turtle.turn(-120); + snowflake(Integer.parseInt(command), 0.8); + return turtle.getTrace(); + + } + + private void snowflake(int stufe, double dist) { + if (stufe == 0) { + turtle.move(dist); + } else { + stufe--; + dist = dist/3; + snowflake(stufe,dist); + turtle.turn(60); + snowflake(stufe,dist); + turtle.turn(-120); + snowflake(stufe,dist); + turtle.turn(60); + snowflake(stufe,dist); + } + } +}