Submit
Path:
~
/
/
proc
/
self
/
root
/
usr
/
lib64
/
python2.7
/
Demo
/
turtle
/
File Content:
tdemo_penrose.py
#! /usr/bin/python2.7 """ 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()
Submit
FILE
FOLDER
Name
Size
Permission
Action
about_turtle.txt
3525 bytes
0644
about_turtledemo.txt
302 bytes
0644
demohelp.txt
3034 bytes
0644
tdemo_I_dontlike_tiltdemo.py
1073 bytes
0755
tdemo_I_dontlike_tiltdemo.pyc
1660 bytes
0644
tdemo_I_dontlike_tiltdemo.pyo
1660 bytes
0644
tdemo_bytedesign.py
4218 bytes
0755
tdemo_bytedesign.pyc
5313 bytes
0644
tdemo_bytedesign.pyo
5313 bytes
0644
tdemo_chaos.py
951 bytes
0644
tdemo_chaos.pyc
2296 bytes
0644
tdemo_chaos.pyo
2296 bytes
0644
tdemo_clock.py
3219 bytes
0755
tdemo_clock.pyc
4535 bytes
0644
tdemo_clock.pyo
4535 bytes
0644
tdemo_colormixer.py
1338 bytes
0644
tdemo_colormixer.pyc
2365 bytes
0644
tdemo_colormixer.pyo
2365 bytes
0644
tdemo_fractalcurves.py
3409 bytes
0755
tdemo_fractalcurves.pyc
3524 bytes
0644
tdemo_fractalcurves.pyo
3524 bytes
0644
tdemo_lindenmayer_indian.py
2432 bytes
0755
tdemo_lindenmayer_indian.pyc
3602 bytes
0644
tdemo_lindenmayer_indian.pyo
3602 bytes
0644
tdemo_minimal_hanoi.py
2049 bytes
0755
tdemo_minimal_hanoi.pyc
3623 bytes
0644
tdemo_minimal_hanoi.pyo
3623 bytes
0644
tdemo_nim.py
6514 bytes
0644
tdemo_nim.pyc
9384 bytes
0644
tdemo_nim.pyo
9384 bytes
0644
tdemo_paint.py
1289 bytes
0755
tdemo_paint.pyc
1901 bytes
0644
tdemo_paint.pyo
1901 bytes
0644
tdemo_peace.py
1065 bytes
0755
tdemo_peace.pyc
1388 bytes
0644
tdemo_peace.pyo
1388 bytes
0644
tdemo_penrose.py
3535 bytes
0755
tdemo_penrose.pyc
6005 bytes
0644
tdemo_penrose.pyo
6005 bytes
0644
tdemo_planet_and_moon.py
2823 bytes
0755
tdemo_planet_and_moon.pyc
4535 bytes
0644
tdemo_planet_and_moon.pyo
4535 bytes
0644
tdemo_tree.py
1410 bytes
0755
tdemo_tree.pyc
2123 bytes
0644
tdemo_tree.pyo
2123 bytes
0644
tdemo_two_canvases.py
1120 bytes
0644
tdemo_two_canvases.pyc
1635 bytes
0644
tdemo_two_canvases.pyo
1635 bytes
0644
tdemo_wikipedia.py
1347 bytes
0644
tdemo_wikipedia.pyc
1955 bytes
0644
tdemo_wikipedia.pyo
1955 bytes
0644
tdemo_yinyang.py
807 bytes
0755
tdemo_yinyang.pyc
1320 bytes
0644
tdemo_yinyang.pyo
1320 bytes
0644
turtle.cfg
160 bytes
0644
turtleDemo.py
10091 bytes
0755
turtleDemo.pyc
10948 bytes
0644
turtleDemo.pyo
10948 bytes
0644
N4ST4R_ID | Naxtarrr