用turtle库绘制图形(forest)

简介: 用turtle库绘制图形(forest)

d86586b389464d2aa9ba8ef688272334.jpg


使用Turtle库绘制图形示例如下:


from turtle import Turtle, colormode, tracer, mainloop
from random import randrange
from time import perf_counter as clock
def symRandom(n):
    return randrange(-n, n + 1)
def randomize(branchlist, angledist, sizedist):
    return [(angle + symRandom(angledist),
             sizefactor * 1.01 ** symRandom(sizedist))
            for angle, sizefactor in branchlist]
def randomfd(t, distance, parts, angledist):
    for i in range(parts):
        t.left(symRandom(angledist))
        t.forward((1.0 * distance) / parts)
def tree(tlist, size, level, widthfactor, branchlists, angledist=10, sizedist=5):
    # benutzt Liste von turtles und Liste von Zweiglisten,
    # fuer jede turtle eine!
    if level > 0:
        lst = []
        brs = []
        for t, branchlist in list(zip(tlist, branchlists)):
            t.pensize(size * widthfactor)
            t.pencolor(255 - (180 - 11 * level + symRandom(15)),
                       180 - 11 * level + symRandom(15),
                       0)
            t.pendown()
            randomfd(t, size, level, angledist)
            yield 1
            for angle, sizefactor in branchlist:
                t.left(angle)
                lst.append(t.clone())
                brs.append(randomize(branchlist, angledist, sizedist))
                t.right(angle)
        for x in tree(lst, size * sizefactor, level - 1, widthfactor, brs,
                      angledist, sizedist):
            yield None
def start(t, x, y):
    colormode(255)
    t.reset()
    t.speed(0)
    t.hideturtle()
    t.left(90)
    t.penup()
    t.setpos(x, y)
    t.pendown()
def doit1(level, pen):
    pen.hideturtle()
    start(pen, 20, -208)
    t = tree([pen], 80, level, 0.1, [[(45, 0.69), (0, 0.65), (-45, 0.71)]])
    return t
def doit2(level, pen):
    pen.hideturtle()
    start(pen, -135, -130)
    t = tree([pen], 120, level, 0.1, [[(45, 0.69), (-45, 0.71)]])
    return t
def doit3(level, pen):
    pen.hideturtle()
    start(pen, 190, -90)
    t = tree([pen], 100, level, 0.1, [[(45, 0.7), (0, 0.72), (-45, 0.65)]])
    return t
# Hier 3 Baumgeneratoren:
def main():
    p = Turtle()
    p.ht()
    tracer(75, 0)
    u = doit1(6, Turtle(undobuffersize=1))
    s = doit2(7, Turtle(undobuffersize=1))
    t = doit3(5, Turtle(undobuffersize=1))
    a = clock()
    while True:
        done = 0
        for b in u, s, t:
            try:
                b.__next__()
            except:
                done += 1
        if done == 3:
            break
    tracer(1, 10)
    b = clock()
    return "runtime: %.2f sec." % (b - a)
if __name__ == '__main__':
    main()
    mainloop()


运行结果如下:


eaf62d990768435485375f0f51c1faa0.png


相关文章
|
4月前
|
数据可视化 Python
Visdom可视化学习笔记(一):通过visdom画曲线和显示图片总结
关于如何使用Visdom进行数据可视化的教程,包括画曲线、显示图片和文本等操作。
165 0
Visdom可视化学习笔记(一):通过visdom画曲线和显示图片总结
|
7月前
|
Python
`matplotlib`是Python中一个非常流行的绘图库,它提供了丰富的绘图接口,包括二维和三维图形的绘制。`Axes3D`是`matplotlib`中用于创建三维坐标轴的对象,而`plot_surface`则是用于在三维空间中绘制表面的函数。
`matplotlib`是Python中一个非常流行的绘图库,它提供了丰富的绘图接口,包括二维和三维图形的绘制。`Axes3D`是`matplotlib`中用于创建三维坐标轴的对象,而`plot_surface`则是用于在三维空间中绘制表面的函数。
|
9月前
|
Python
绘制你的图像-turtle
`turtle`是Python中的一个图形绘制库,源自1967年的Logo编程语言。它使用tkinter创建图形界面,让用户仿佛操控一支在画布上画画的笔。基本操作包括设置画笔颜色、填充、移动及旋转。示例代码展示了如何创建图形,如红黄相间的形状和太极图。turtle还可用于制作动画,如小球下落效果。此外,文中还给出了绘制玫瑰曲线、螺旋和扇子的代码示例。turtle是引导初学者学习编程的好工具。5月更文挑战第18天
82 0
|
9月前
|
Python
基于python的turtle实现圣诞树的绘制
基于python的turtle实现圣诞树的绘制
|
Python
Python turtle可以用的颜色
Python turtle可以用的颜色
195 0
|
编解码 数据可视化 数据挖掘
【Matplotlib】绘制图形
【Matplotlib】绘制图形
201 0
使用python中turtle库绘制图形
使用python中turtle库绘制图形
|
前端开发 Python
Python tkinter库之Canvas直线画圆和莫尔条纹
Python tkinter库之Canvas直线画圆和莫尔条纹
190 0
python-turtle(海龟绘图)圣诞树
前言: 1.在开始前需要引入turtle库,若没有下载这个库可以复制下面这条语句在PyCharm终端下载 pip install turtle 2.turtle库,它这个画笔是在这个窗口横轴x轴,纵轴y轴从原点(0,0)处开始,以函数指令使其移动绘图。 正文: 一:开始前引入所需的库 # turtle as t 是将turtle替换为t import turtle as t # 随机库 import random # 引入turtle库中的所有用法 from turtle import * 二:设置窗口属性和RGB颜色属性以及绘图数度 # 设置窗口大小和背景颜色 t.screensize(80
python-turtle(海龟绘图)圣诞树

热门文章

最新文章