From 52e9b2f97967fa2e99eab78b2d1ce142a9e9bb39 Mon Sep 17 00:00:00 2001 From: "navid.sassan" Date: Sun, 18 Oct 2020 23:54:21 +0200 Subject: [PATCH] finished s04 --- .../main/java/ch/zhaw/ads/HilbertServer.java | 31 ++++++++++++++++ .../java/ch/zhaw/ads/SnowflakeServer.java | 35 +++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 04/src/main/java/ch/zhaw/ads/HilbertServer.java create mode 100644 04/src/main/java/ch/zhaw/ads/SnowflakeServer.java 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); + } + } +}