Issue #10199: Fixing r86095 - svn did not like combining rename and change of directory.
This commit is contained in:
parent
4f2eaceb83
commit
77d4dc0c1b
|
@ -0,0 +1,119 @@
|
|||
#!/usr/bin/env python3
|
||||
""" turtle-example-suite:
|
||||
|
||||
xtx_lindenmayer_indian.py
|
||||
|
||||
Each morning women in Tamil Nadu, in southern
|
||||
India, place designs, created by using rice
|
||||
flour and known as kolam on the thresholds of
|
||||
their homes.
|
||||
|
||||
These can be described by Lindenmayer systems,
|
||||
which can easily be implemented with turtle
|
||||
graphics and Python.
|
||||
|
||||
Two examples are shown here:
|
||||
(1) the snake kolam
|
||||
(2) anklets of Krishna
|
||||
|
||||
Taken from Marcia Ascher: Mathematics
|
||||
Elsewhere, An Exploration of Ideas Across
|
||||
Cultures
|
||||
|
||||
"""
|
||||
################################
|
||||
# Mini Lindenmayer tool
|
||||
###############################
|
||||
|
||||
from turtle import *
|
||||
|
||||
def replace( seq, replacementRules, n ):
|
||||
for i in range(n):
|
||||
newseq = ""
|
||||
for element in seq:
|
||||
newseq = newseq + replacementRules.get(element,element)
|
||||
seq = newseq
|
||||
return seq
|
||||
|
||||
def draw( commands, rules ):
|
||||
for b in commands:
|
||||
try:
|
||||
rules[b]()
|
||||
except TypeError:
|
||||
try:
|
||||
draw(rules[b], rules)
|
||||
except:
|
||||
pass
|
||||
|
||||
|
||||
def main():
|
||||
################################
|
||||
# Example 1: Snake kolam
|
||||
################################
|
||||
|
||||
|
||||
def r():
|
||||
right(45)
|
||||
|
||||
def l():
|
||||
left(45)
|
||||
|
||||
def f():
|
||||
forward(7.5)
|
||||
|
||||
snake_rules = {"-":r, "+":l, "f":f, "b":"f+f+f--f--f+f+f"}
|
||||
snake_replacementRules = {"b": "b+f+b--f--b+f+b"}
|
||||
snake_start = "b--f--b--f"
|
||||
|
||||
drawing = replace(snake_start, snake_replacementRules, 3)
|
||||
|
||||
reset()
|
||||
speed(3)
|
||||
tracer(1,0)
|
||||
ht()
|
||||
up()
|
||||
backward(195)
|
||||
down()
|
||||
draw(drawing, snake_rules)
|
||||
|
||||
from time import sleep
|
||||
sleep(3)
|
||||
|
||||
################################
|
||||
# Example 2: Anklets of Krishna
|
||||
################################
|
||||
|
||||
def A():
|
||||
color("red")
|
||||
circle(10,90)
|
||||
|
||||
def B():
|
||||
from math import sqrt
|
||||
color("black")
|
||||
l = 5/sqrt(2)
|
||||
forward(l)
|
||||
circle(l, 270)
|
||||
forward(l)
|
||||
|
||||
def F():
|
||||
color("green")
|
||||
forward(10)
|
||||
|
||||
krishna_rules = {"a":A, "b":B, "f":F}
|
||||
krishna_replacementRules = {"a" : "afbfa", "b" : "afbfbfbfa" }
|
||||
krishna_start = "fbfbfbfb"
|
||||
|
||||
reset()
|
||||
speed(0)
|
||||
tracer(3,0)
|
||||
ht()
|
||||
left(45)
|
||||
drawing = replace(krishna_start, krishna_replacementRules, 3)
|
||||
draw(drawing, krishna_rules)
|
||||
tracer(1)
|
||||
return "Done!"
|
||||
|
||||
if __name__=='__main__':
|
||||
msg = main()
|
||||
print(msg)
|
||||
mainloop()
|
Loading…
Reference in New Issue