python画图画一个图中的内容

img


根据输入的数字,绘制有相应数量叶子的树枝
树枝有合适的弧度
页面中随机布局多个树枝

import turtle

def main_(t, sPos):
    t.up()
    t.setpos(*sPos)
    t.pensize(2)
    cod = []
    
    t.pd()
    t.seth(90)
    for i in range(0, 41):
        t.fd(5)
        if i % 5 == 0:
            cod.append((t.xcor(), t.ycor(),t.heading()))
        t.right(2)
    t.up()
    cod.append((t.xcor(), t.ycor(), t.heading()))
    return cod

def draw_leaf(t, tPos, angle, flgUD = False):
    t.up()
    t.setpos(*tPos)
    
    t.seth(angle)
    fun = t.right
    if flgUD:
        fun = t.right
    else:
        fun = t.left
    fun(30)
    
    t.pd()
    for _ in range(30):
        t.fd(1)
        fun(3)
    pp = t.xcor(), t.ycor()
    fun(90)
    for _ in range(30):
        t.fd(1)
        fun(3)    
    t.up()
    t.setpos(*pp)
    t.pd()
    t.goto(*tPos)
    t.up()
    
t = turtle.Turtle()

t.ht()
turtle.tracer(0)
res = main_(t, (0, 0))
print(res)
for i in res[1:-2]:
    draw_leaf(t, tPos = i[:2], angle = i[-1])
    draw_leaf(t, tPos = i[:2], angle = i[-1], flgUD = True)
draw_leaf(t, tPos = res[-1][:2], angle = -45)    
turtle.tracer(1)
turtle.done()


img

import turtle,math,random

t=turtle.Turtle()
t.speed(0)
t.lt(90)
l=60*math.sin(5*math.pi/18)
def fun(r): #画一截树叶
    t.lt(r)
    t.fd(40)
    t.lt(10)
    t.circle(30,100)
    t.lt(80)
    t.circle(30,100)
    t.lt(130)
    p=t.pos()
    t.fd(l)
    t.up()
    t.goto(p)
    t.down()
    t.rt(70)
    t.circle(-30,100)
    t.rt(80)
    t.circle(-30,100)
    t.rt(130)
    p=t.pos()
    t.fd(l)
    t.up()
    t.goto(p)
    t.down()
    t.lt(60+r)

n=int(turtle.numinput('Title','枝叶数',8)) #输入枝叶数
for i in range(10): #画十个树枝
    r=random.randint(-8,8) #弯曲度
    for i in range(n):
        fun(r)
    t.fd(l+25)
    t.lt(130)
    t.circle(30,100)
    t.lt(80)
    t.circle(30,100)
    t.up()
    t.goto(random.randint(-200,200),random.randint(-200,200)) #移向随机位置
    t.seth(90+r)
    t.down()

img