From cbb23cb564efed65766543d76a1eeed471a0ea6b Mon Sep 17 00:00:00 2001 From: Dave Astels Date: Sat, 29 Jun 2019 15:25:04 -0400 Subject: [PATCH 1/5] Cleanup instrumentation --- adafruit_turtle.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/adafruit_turtle.py b/adafruit_turtle.py index 662fb20..28d36db 100644 --- a/adafruit_turtle.py +++ b/adafruit_turtle.py @@ -200,7 +200,6 @@ def __init__(self, display=board.DISPLAY): def _drawturtle(self): self._turtle_sprite.x = int(self._x - 4) self._turtle_sprite.y = int(self._y - 4) - #self._logger.debug("pos (%d, %d)", self._x, self._y) ############################################################################ # Move and draw @@ -264,7 +263,6 @@ def goto(self, x1, y1=None): y1 = self._h // 2 - y1 x0 = self._x y0 = self._y - self._logger.debug("* GoTo from (%d, %d) to (%d, %d)", x0, y0, x1, y1) if not self.isdown(): self._x = x1 # woot, we just skip ahead self._y = y1 @@ -470,7 +468,6 @@ def dot(self, size=None, color=None): color = self._pencolor else: color = self._color_to_pencolor(color) - self._logger.debug('dot(%d)', size) self._draw_disk(self._x - size, self._y - size, 2 * size + 1, 2 * size + 1, size, color) self._fg_sprite[0, 0] = 0 From b32639260ebcf1fab456863cd70dc79797e5fb49 Mon Sep 17 00:00:00 2001 From: Dave Astels Date: Sat, 29 Jun 2019 15:25:04 -0400 Subject: [PATCH 2/5] Revert "Cleanup instrumentation" This reverts commit cbb23cb564efed65766543d76a1eeed471a0ea6b. --- adafruit_turtle.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/adafruit_turtle.py b/adafruit_turtle.py index 28d36db..662fb20 100644 --- a/adafruit_turtle.py +++ b/adafruit_turtle.py @@ -200,6 +200,7 @@ def __init__(self, display=board.DISPLAY): def _drawturtle(self): self._turtle_sprite.x = int(self._x - 4) self._turtle_sprite.y = int(self._y - 4) + #self._logger.debug("pos (%d, %d)", self._x, self._y) ############################################################################ # Move and draw @@ -263,6 +264,7 @@ def goto(self, x1, y1=None): y1 = self._h // 2 - y1 x0 = self._x y0 = self._y + self._logger.debug("* GoTo from (%d, %d) to (%d, %d)", x0, y0, x1, y1) if not self.isdown(): self._x = x1 # woot, we just skip ahead self._y = y1 @@ -468,6 +470,7 @@ def dot(self, size=None, color=None): color = self._pencolor else: color = self._color_to_pencolor(color) + self._logger.debug('dot(%d)', size) self._draw_disk(self._x - size, self._y - size, 2 * size + 1, 2 * size + 1, size, color) self._fg_sprite[0, 0] = 0 From 07f7e2a631a2cb55f18cbfa1fc115c17a473d3dd Mon Sep 17 00:00:00 2001 From: Dave Astels Date: Sat, 29 Jun 2019 15:31:31 -0400 Subject: [PATCH 3/5] Change logging level to INFO --- adafruit_turtle.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adafruit_turtle.py b/adafruit_turtle.py index 662fb20..085e49c 100644 --- a/adafruit_turtle.py +++ b/adafruit_turtle.py @@ -138,7 +138,7 @@ class turtle(object): def __init__(self, display=board.DISPLAY): self._logger = logging.getLogger("Turtle") - self._logger.setLevel(logging.DEBUG) + self._logger.setLevel(logging.INFO) self._display = display self._w = self._display.width self._h = self._display.height From e6dbeffbed0f85086f6f3add9657c3f503819b22 Mon Sep 17 00:00:00 2001 From: Dave Astels Date: Sat, 29 Jun 2019 15:32:34 -0400 Subject: [PATCH 4/5] Cleanup examples and add more --- examples/turtle_circle.py | 19 +++++++++----- examples/turtle_circle_hex.py | 12 +++++++++ examples/turtle_dots.py | 9 +++---- examples/turtle_hilbert.py | 24 +++++++++++++++++ examples/turtle_koch.py | 36 ++++++++++++++++++++++++++ examples/turtle_manual_hex.py | 20 ++++++++++++++ examples/turtle_overlayed_koch.py | 43 +++++++++++++++++++++++++++++++ examples/turtle_sierpinski.py | 37 ++++++++++++++++++++++++++ examples/turtle_square.py | 21 +++------------ examples/turtle_swirl.py | 2 +- 10 files changed, 192 insertions(+), 31 deletions(-) create mode 100644 examples/turtle_circle_hex.py create mode 100644 examples/turtle_hilbert.py create mode 100644 examples/turtle_koch.py create mode 100644 examples/turtle_manual_hex.py create mode 100644 examples/turtle_overlayed_koch.py create mode 100644 examples/turtle_sierpinski.py diff --git a/examples/turtle_circle.py b/examples/turtle_circle.py index 09ab899..a622a72 100644 --- a/examples/turtle_circle.py +++ b/examples/turtle_circle.py @@ -3,13 +3,18 @@ turtle = turtle(board.DISPLAY) -turtle.pencolor(Color.WHITE) - +mycolors = [Color.WHITE, Color.RED, Color.BLUE, Color.GREEN, Color.ORANGE, Color.PURPLE] +turtle.penup() +turtle.forward(130) +turtle.right(180) turtle.pendown() -turtle.circle(20) -turtle.forward(20) -turtle.circle(20, extent=180) -turtle.forward(50) -turtle.circle(50, steps=6) + +for i in range(6): + turtle.pencolor(mycolors[i]) + turtle.circle(25) + turtle.penup() + turtle.forward(50) + turtle.pendown() + while True: pass diff --git a/examples/turtle_circle_hex.py b/examples/turtle_circle_hex.py new file mode 100644 index 0000000..4b17395 --- /dev/null +++ b/examples/turtle_circle_hex.py @@ -0,0 +1,12 @@ +import board +from adafruit_turtle import turtle + +turtle = turtle(board.DISPLAY) +turtle.pendown() + +for _ in range(32): + turtle.circle(50, steps=6) + turtle.right(11.1111) + +while True: + pass diff --git a/examples/turtle_dots.py b/examples/turtle_dots.py index 0e1c0f1..bc68754 100644 --- a/examples/turtle_dots.py +++ b/examples/turtle_dots.py @@ -1,16 +1,13 @@ import board from adafruit_turtle import turtle, Color -turtle = turtle(board.DISPLAY) -size = min(board.DISPLAY.width, board.DISPLAY.height) * 0.5 - -print("Turtle time! Lets draw a rainbow benzene") - +print("Turtle time! Lets draw a square with dots") +turtle = turtle(board.DISPLAY) turtle.pendown() for _ in range(4): - turtle.dot(8, Color.RED) + turtle.dot(8) turtle.left(90) turtle.forward(25) diff --git a/examples/turtle_hilbert.py b/examples/turtle_hilbert.py new file mode 100644 index 0000000..68111a4 --- /dev/null +++ b/examples/turtle_hilbert.py @@ -0,0 +1,24 @@ +import board +from adafruit_turtle import turtle + +def hilbert2(step, rule, angle, depth, t): + if depth > 0: + a = lambda: hilbert2(step, "a", angle, depth - 1, t) + b = lambda: hilbert2(step, "b", angle, depth - 1, t) + left = lambda: t.left(angle) + right = lambda: t.right(angle) + forward = lambda: t.forward(step) + if rule == "a": + left(); b(); forward(); right(); a(); forward(); a(); right(); forward(); b(); left() + if rule == "b": + right(); a(); forward(); left(); b(); forward(); b(); left(); forward(); a(); right() + +turtle = turtle(board.DISPLAY) +turtle.penup() + +turtle.goto(-80, -80) +turtle.pendown() +hilbert2(5, "a", 90, 5, turtle) + +while True: + pass diff --git a/examples/turtle_koch.py b/examples/turtle_koch.py new file mode 100644 index 0000000..80d73ce --- /dev/null +++ b/examples/turtle_koch.py @@ -0,0 +1,36 @@ +import board +from adafruit_turtle import turtle + +def f(side_length, depth, generation): + if depth == 0: + side = turtle.forward(side_length) + else: + side = lambda: f(side_length / 3, depth - 1, generation + 1) + side() + turtle.left(60) + side() + turtle.right(120) + side() + turtle.left(60) + side() + +turtle = turtle(board.DISPLAY) + +unit= min(board.DISPLAY.width / 3, board.DISPLAY.height / 4) +top_len = unit * 3 +print(top_len) +turtle.penup() +turtle.goto(-1.5 * unit, unit) +turtle.pendown() + +num_generations = 3 +top_side = lambda: f(top_len, num_generations, 0) + +top_side() +turtle.right(120) +top_side() +turtle.right(120) +top_side() + +while True: + pass diff --git a/examples/turtle_manual_hex.py b/examples/turtle_manual_hex.py new file mode 100644 index 0000000..45fe38d --- /dev/null +++ b/examples/turtle_manual_hex.py @@ -0,0 +1,20 @@ +import board +from adafruit_turtle import turtle + +turtle = turtle(board.DISPLAY) + + +# turtle.penup() +# turtle.right(45) +# turtle.forward(90) +# turtle.right(75) + +turtle.pendown() +for _ in range(21): + for _ in range(6): + turtle.forward(50) + turtle.right(61) + turtle.right(11.1111) + +while True: + pass diff --git a/examples/turtle_overlayed_koch.py b/examples/turtle_overlayed_koch.py new file mode 100644 index 0000000..440f641 --- /dev/null +++ b/examples/turtle_overlayed_koch.py @@ -0,0 +1,43 @@ +import board +from adafruit_turtle import turtle, Color + +generation_colors = [Color.RED, Color.BLUE, Color.GREEN] + +def f(side_length, depth, generation): + if depth == 0: + side = turtle.forward(side_length) + else: + side = lambda: f(side_length / 3, depth - 1, generation + 1) + side() + turtle.left(60) + side() + turtle.right(120) + side() + turtle.left(60) + side() + +def snowflake(num_generations, generation_color): + top_side = lambda: f(top_len, num_generations, 0) + turtle.pencolor(generation_color) + top_side() + turtle.right(120) + top_side() + turtle.right(120) + top_side() + + +turtle = turtle(board.DISPLAY) + +unit= min(board.DISPLAY.width / 3, board.DISPLAY.height / 4) +top_len = unit * 3 +print(top_len) +turtle.penup() +turtle.goto(-1.5 * unit, unit) +turtle.pendown() + +for generations in range(3): + snowflake(generations, generation_colors[generations]) + turtle.right(120) + +while True: + pass diff --git a/examples/turtle_sierpinski.py b/examples/turtle_sierpinski.py new file mode 100644 index 0000000..11b2a1f --- /dev/null +++ b/examples/turtle_sierpinski.py @@ -0,0 +1,37 @@ +import board +from adafruit_turtle import turtle + +def getMid(p1,p2): + return ( (p1[0]+p2[0]) / 2, (p1[1] + p2[1]) / 2) #find midpoint + +def triangle(points, depth): + + turtle.penup() + turtle.goto(points[0][0], points[0][1]) + turtle.pendown() + turtle.goto(points[1][0], points[1][1]) + turtle.goto(points[2][0], points[2][1]) + turtle.goto(points[0][0], points[0][1]) + + if depth > 0: + triangle([points[0], + getMid(points[0], points[1]), + getMid(points[0], points[2])], + depth-1) + triangle([points[1], + getMid(points[0], points[1]), + getMid(points[1], points[2])], + depth-1) + triangle([points[2], + getMid(points[2], points[1]), + getMid(points[0], points[2])], + depth-1) + +turtle = turtle(board.DISPLAY) +big = min(board.DISPLAY.width / 2, board.DISPLAY.height / 2) +little = big / 1.4 +seed_points = [[-big, -little],[0,big],[big,-little]] #size of triangle +triangle(seed_points,4) + +while True: + pass diff --git a/examples/turtle_square.py b/examples/turtle_square.py index 3edc8f6..eb585a3 100644 --- a/examples/turtle_square.py +++ b/examples/turtle_square.py @@ -5,24 +5,11 @@ print("Turtle time! Lets draw a simple square") turtle.pencolor(Color.WHITE) -print("Position:", turtle.pos()) -print("Heading:", turtle.heading()) - -turtle.penup() -print("Pen down?", turtle.isdown()) turtle.pendown() -print("Pen down?", turtle.isdown()) -turtle.forward(25) -print("Position:", turtle.pos()) -turtle.left(90) -turtle.forward(25) -print("Position:", turtle.pos()) -turtle.left(90) -turtle.forward(25) -print("Position:", turtle.pos()) -turtle.left(90) -turtle.forward(25) -print("Position:", turtle.pos()) + +for _ in range(4): + turtle.forward(25) + turtle.left(90) while True: pass diff --git a/examples/turtle_swirl.py b/examples/turtle_swirl.py index d7664af..58c7f9e 100644 --- a/examples/turtle_swirl.py +++ b/examples/turtle_swirl.py @@ -8,7 +8,7 @@ colors = [Color.ORANGE, Color.PURPLE] -for x in range(300): +for x in range(400): turtle.pencolor(colors[x % 2]) turtle.forward(x) turtle.left(91) From 7f04ed1b4e4fbef2d2e6960e6411a90b6e303a23 Mon Sep 17 00:00:00 2001 From: Dave Astels Date: Sat, 29 Jun 2019 17:43:17 -0400 Subject: [PATCH 5/5] Pylint cleanup --- examples/turtle_dots.py | 2 +- examples/turtle_hilbert.py | 24 ++++++++++++++++++++++-- examples/turtle_koch.py | 2 +- examples/turtle_sierpinski.py | 8 ++++---- 4 files changed, 28 insertions(+), 8 deletions(-) diff --git a/examples/turtle_dots.py b/examples/turtle_dots.py index bc68754..2d6e069 100644 --- a/examples/turtle_dots.py +++ b/examples/turtle_dots.py @@ -1,5 +1,5 @@ import board -from adafruit_turtle import turtle, Color +from adafruit_turtle import turtle print("Turtle time! Lets draw a square with dots") diff --git a/examples/turtle_hilbert.py b/examples/turtle_hilbert.py index 68111a4..c39d58a 100644 --- a/examples/turtle_hilbert.py +++ b/examples/turtle_hilbert.py @@ -9,9 +9,29 @@ def hilbert2(step, rule, angle, depth, t): right = lambda: t.right(angle) forward = lambda: t.forward(step) if rule == "a": - left(); b(); forward(); right(); a(); forward(); a(); right(); forward(); b(); left() + left() + b() + forward() + right() + a() + forward() + a() + right() + forward() + b() + left() if rule == "b": - right(); a(); forward(); left(); b(); forward(); b(); left(); forward(); a(); right() + right() + a() + forward() + left() + b() + forward() + b() + left() + forward() + a() + right() turtle = turtle(board.DISPLAY) turtle.penup() diff --git a/examples/turtle_koch.py b/examples/turtle_koch.py index 80d73ce..936b97b 100644 --- a/examples/turtle_koch.py +++ b/examples/turtle_koch.py @@ -16,7 +16,7 @@ def f(side_length, depth, generation): turtle = turtle(board.DISPLAY) -unit= min(board.DISPLAY.width / 3, board.DISPLAY.height / 4) +unit = min(board.DISPLAY.width / 3, board.DISPLAY.height / 4) top_len = unit * 3 print(top_len) turtle.penup() diff --git a/examples/turtle_sierpinski.py b/examples/turtle_sierpinski.py index 11b2a1f..1cc640e 100644 --- a/examples/turtle_sierpinski.py +++ b/examples/turtle_sierpinski.py @@ -1,8 +1,8 @@ import board from adafruit_turtle import turtle -def getMid(p1,p2): - return ( (p1[0]+p2[0]) / 2, (p1[1] + p2[1]) / 2) #find midpoint +def getMid(p1, p2): + return ((p1[0] + p2[0]) / 2, (p1[1] + p2[1]) / 2) #find midpoint def triangle(points, depth): @@ -30,8 +30,8 @@ def triangle(points, depth): turtle = turtle(board.DISPLAY) big = min(board.DISPLAY.width / 2, board.DISPLAY.height / 2) little = big / 1.4 -seed_points = [[-big, -little],[0,big],[big,-little]] #size of triangle -triangle(seed_points,4) +seed_points = [[-big, -little], [0, big], [big, -little]] #size of triangle +triangle(seed_points, 4) while True: pass