summaryrefslogtreecommitdiffstats
path: root/Demo/turtle/tdemo_penrose.py
diff options
context:
space:
mode:
Diffstat (limited to 'Demo/turtle/tdemo_penrose.py')
-rw-r--r--Demo/turtle/tdemo_penrose.py181
1 files changed, 0 insertions, 181 deletions
diff --git a/Demo/turtle/tdemo_penrose.py b/Demo/turtle/tdemo_penrose.py
deleted file mode 100644
index f816f66..0000000
--- a/Demo/turtle/tdemo_penrose.py
+++ /dev/null
@@ -1,181 +0,0 @@
-#!/usr/bin/python
-""" xturtle-example-suite:
-
- xtx_kites_and_darts.py
-
-Constructs two aperiodic penrose-tilings,
-consisting of kites and darts, by the method
-of inflation in six steps.
-
-Starting points are the patterns "sun"
-consisting of five kites and "star"
-consisting of five darts.
-
-For more information see:
- http://en.wikipedia.org/wiki/Penrose_tiling
- -------------------------------------------
-"""
-from turtle import *
-from math import cos, pi
-from time import clock, sleep
-
-f = (5**0.5-1)/2.0 # (sqrt(5)-1)/2 -- golden ratio
-d = 2 * cos(3*pi/10)
-
-def kite(l):
- fl = f * l
- lt(36)
- fd(l)
- rt(108)
- fd(fl)
- rt(36)
- fd(fl)
- rt(108)
- fd(l)
- rt(144)
-
-def dart(l):
- fl = f * l
- lt(36)
- fd(l)
- rt(144)
- fd(fl)
- lt(36)
- fd(fl)
- rt(144)
- fd(l)
- rt(144)
-
-def inflatekite(l, n):
- if n == 0:
- px, py = pos()
- h, x, y = int(heading()), round(px,3), round(py,3)
- tiledict[(h,x,y)] = True
- return
- fl = f * l
- lt(36)
- inflatedart(fl, n-1)
- fd(l)
- rt(144)
- inflatekite(fl, n-1)
- lt(18)
- fd(l*d)
- rt(162)
- inflatekite(fl, n-1)
- lt(36)
- fd(l)
- rt(180)
- inflatedart(fl, n-1)
- lt(36)
-
-def inflatedart(l, n):
- if n == 0:
- px, py = pos()
- h, x, y = int(heading()), round(px,3), round(py,3)
- tiledict[(h,x,y)] = False
- return
- fl = f * l
- inflatekite(fl, n-1)
- lt(36)
- fd(l)
- rt(180)
- inflatedart(fl, n-1)
- lt(54)
- fd(l*d)
- rt(126)
- inflatedart(fl, n-1)
- fd(l)
- rt(144)
-
-def draw(l, n, th=2):
- clear()
- l = l * f**n
- shapesize(l/100.0, l/100.0, th)
- for k in tiledict:
- h, x, y = k
- setpos(x, y)
- setheading(h)
- if tiledict[k]:
- shape("kite")
- color("black", (0, 0.75, 0))
- else:
- shape("dart")
- color("black", (0.75, 0, 0))
- stamp()
-
-def sun(l, n):
- for i in range(5):
- inflatekite(l, n)
- lt(72)
-
-def star(l,n):
- for i in range(5):
- inflatedart(l, n)
- lt(72)
-
-def makeshapes():
- tracer(0)
- begin_poly()
- kite(100)
- end_poly()
- register_shape("kite", get_poly())
- begin_poly()
- dart(100)
- end_poly()
- register_shape("dart", get_poly())
- tracer(1)
-
-def start():
- reset()
- ht()
- pu()
- makeshapes()
- resizemode("user")
-
-def test(l=200, n=4, fun=sun, startpos=(0,0), th=2):
- global tiledict
- goto(startpos)
- setheading(0)
- tiledict = {}
- a = clock()
- tracer(0)
- fun(l, n)
- b = clock()
- draw(l, n, th)
- tracer(1)
- c = clock()
- print("Calculation: %7.4f s" % (b - a))
- print("Drawing: %7.4f s" % (c - b))
- print("Together: %7.4f s" % (c - a))
- nk = len([x for x in tiledict if tiledict[x]])
- nd = len([x for x in tiledict if not tiledict[x]])
- print("%d kites and %d darts = %d pieces." % (nk, nd, nk+nd))
-
-def demo(fun=sun):
- start()
- for i in range(8):
- a = clock()
- test(300, i, fun)
- b = clock()
- t = b - a
- if t < 2:
- sleep(2 - t)
-
-def main():
- #title("Penrose-tiling with kites and darts.")
- mode("logo")
- bgcolor(0.3, 0.3, 0)
- demo(sun)
- sleep(2)
- demo(star)
- pencolor("black")
- goto(0,-200)
- pencolor(0.7,0.7,1)
- write("Please wait...",
- align="center", font=('Arial Black', 36, 'bold'))
- test(600, 8, startpos=(70, 117))
- return "Done"
-
-if __name__ == "__main__":
- msg = main()
- mainloop()