Programming Pandit

c/c++/c#/Javav/Python


Latest Update

Thursday, September 10, 2020

Tree Design Python programming Demo by G Krishna Chauhan

 Source Code


#!/usr/bin/env python3

"""      turtle-example-suite:


             tdemo_tree.py


Displays a 'breadth-first-tree' - in contrast

to the classical Logo tree drawing programs,

which use a depth-first-algorithm.


Uses:

(1) a tree-generator, where the drawing is

quasi the side-effect, whereas the generator

always yields None.

(2) Turtle-cloning: At each branching point

the current pen is cloned. So in the end

there are 1024 turtles.

"""

from turtle import Turtle, mainloop

from time import perf_counter as clock


def tree(plist, l, a, f):

    """ plist is list of pens

    l is length of branch

    a is half of the angle between 2 branches

    f is factor by which branch is shortened

    from level to level."""

    if l > 3:

        lst = []

        for p in plist:

            p.forward(l)

            q = p.clone()

            p.left(a)

            q.right(a)

            lst.append(p)

            lst.append(q)

        for x in tree(lst, l*f, a, f):

            yield None


def maketree():

    p = Turtle()

    p.setundobuffer(None)

    p.hideturtle()

    p.speed(0)

    p.getscreen().tracer(30,0)

    p.left(90)

    p.penup()

    p.forward(-210)

    p.pendown()

    t = tree([p], 200, 65, 0.6375)

    for x in t:

        pass


def main():

    a=clock()

    maketree()

    b=clock()

    return "done: %.2f sec." % (b-a)


if __name__ == "__main__":

    msg = main()

    print(msg)

    mainloop()




No comments:

Post a Comment