Differences
This shows you the differences between two versions of the page.
student:digital2021:turtle:start [2021/10/15 11:24] – created normanap | student:digital2021:turtle:start [2021/10/16 11:29] (current) – Add Python art materials lam2mo | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Python Turtle Art, DIGITAL 2021 ====== | ====== Python Turtle Art, DIGITAL 2021 ====== | ||
+ | [[http:// | ||
+ | |||
+ | < | ||
+ | ## square version 1 (algorithm) | ||
+ | |||
+ | t.forward(100) | ||
+ | t.right(90) | ||
+ | t.forward(100) | ||
+ | t.right(90) | ||
+ | t.forward(100) | ||
+ | t.right(90) | ||
+ | t.forward(100) | ||
+ | t.right(90) | ||
+ | |||
+ | |||
+ | ## square version 2 (iteration/ | ||
+ | |||
+ | for i in range(4): | ||
+ | t.forward(100) | ||
+ | t.right(90) | ||
+ | |||
+ | |||
+ | ## square version 3 (abstraction/ | ||
+ | |||
+ | def square(size): | ||
+ | for i in range(4): | ||
+ | t.forward(size) | ||
+ | t.right(90) | ||
+ | |||
+ | t.speed(0) | ||
+ | for i in range(10): | ||
+ | square(i*10) | ||
+ | |||
+ | |||
+ | ## square version 4 (recursion) | ||
+ | |||
+ | def square(size): | ||
+ | for i in range(4): | ||
+ | t.forward(size) | ||
+ | t.right(90) | ||
+ | |||
+ | def fractal(size): | ||
+ | if size > 2: | ||
+ | square(size) | ||
+ | for i in range(4): | ||
+ | fractal(size/ | ||
+ | t.forward(size) | ||
+ | t.right(90) | ||
+ | |||
+ | t.speed(0) | ||
+ | fractal(200) | ||
+ | |||
+ | |||
+ | ## tree fractal | ||
+ | |||
+ | def tree(size): | ||
+ | if size < 10: | ||
+ | t.forward(size) | ||
+ | t.backward(size) | ||
+ | return | ||
+ | t.forward(size) | ||
+ | t.left(30) | ||
+ | tree(size*0.7) | ||
+ | t.right(60) | ||
+ | tree(size*0.7) | ||
+ | t.left(30) | ||
+ | t.backward(size) | ||
+ | |||
+ | t.pencolor(" | ||
+ | t.setheading(90) | ||
+ | t.speed(0) | ||
+ | tree(100) | ||
+ | |||
+ | |||
+ | ## fern fractal | ||
+ | |||
+ | def fern(size): | ||
+ | if size > 3: | ||
+ | t.forward(size) | ||
+ | t.right(95) | ||
+ | fern(size*0.4) | ||
+ | t.left(190) | ||
+ | fern(size*0.4) | ||
+ | t.right(100) | ||
+ | fern(size*0.8) | ||
+ | t.left(5) | ||
+ | t.backward(size) | ||
+ | |||
+ | t.pencolor(" | ||
+ | t.speed(0) | ||
+ | fern(50) | ||
+ | |||
+ | |||
+ | ## snowflake fractal | ||
+ | |||
+ | def snowflake(size): | ||
+ | if size < 10: | ||
+ | t.forward(size) | ||
+ | else: | ||
+ | snowflake(size/ | ||
+ | t.left(60) | ||
+ | snowflake(size/ | ||
+ | t.right(120) | ||
+ | snowflake(size/ | ||
+ | t.left(60) | ||
+ | snowflake(size/ | ||
+ | |||
+ | t.pencolor(" | ||
+ | t.speed(0) | ||
+ | t.setheading(90) | ||
+ | for i in range(3): | ||
+ | snowflake(100) | ||
+ | t.right(120) | ||
+ | |||
+ | |||
+ | ## pythagoras triangle fractal | ||
+ | |||
+ | from math import sqrt | ||
+ | |||
+ | def pythagoras(size): | ||
+ | t.begin_fill() | ||
+ | for i in range(4): | ||
+ | t.forward(size) | ||
+ | t.right(90) | ||
+ | t.end_fill() | ||
+ | if size > 5: | ||
+ | s = size*sqrt(2)/ | ||
+ | t.forward(size) | ||
+ | t.left(45) | ||
+ | pythagoras(s) | ||
+ | t.right(90) | ||
+ | t.forward(s) | ||
+ | pythagoras(s) | ||
+ | t.backward(s) | ||
+ | t.left(45) | ||
+ | t.backward(size) | ||
+ | |||
+ | t.speed(0) | ||
+ | t.setheading(90) | ||
+ | pythagoras(50) | ||
+ | |||
+ | |||
+ | ## sierpinski triangle fractal | ||
+ | |||
+ | from math import sqrt | ||
+ | |||
+ | def sierpinski(x, | ||
+ | if size < 10: | ||
+ | t.penup() | ||
+ | t.goto(x,y) | ||
+ | t.pendown() | ||
+ | t.begin_fill() | ||
+ | for i in range(3): | ||
+ | t.forward(size) | ||
+ | t.left(120) | ||
+ | t.end_fill() | ||
+ | else: | ||
+ | h = sqrt(3) * size / 4 | ||
+ | sierpinski(x, | ||
+ | sierpinski(x+size/ | ||
+ | sierpinski(x+size/ | ||
+ | |||
+ | t.speed(0) | ||
+ | sierpinski(-100, | ||
+ | |||
+ | </ |