diff options
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/turtledemo/tdemo_lindenmayer_indian.py | 119 |
1 files changed, 0 insertions, 119 deletions
diff --git a/Lib/turtledemo/tdemo_lindenmayer_indian.py b/Lib/turtledemo/tdemo_lindenmayer_indian.py deleted file mode 100644 index 3925f25..0000000 --- a/Lib/turtledemo/tdemo_lindenmayer_indian.py +++ /dev/null @@ -1,119 +0,0 @@ -#!/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() |