绘制图形,挑战上色分形树-python

本文介绍了Python的turtle库,用于绘制图形。通过学习turtle库的基础函数,如前进、后退、转向等,以及画笔控制,最终利用递归实现了分形树的绘制。教程中还分享了绘制分形树的思路和角度转换方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python绘制图形

最近太懈怠啦~没有好好学习,赶紧把课程补一补!
今天要学小乌龟库——turtle库

小乌龟库比较特别,大部分的语句都是 <a>.<b>()的形式:表示使用<a> 中的方法<b>(),或者调用函数库<a>中的函数<b>()

形状绘制函数
  • turtle.forward(distance) -画笔向前(右)移动distance距离
  • turtle.backward(distance) -画笔向后(左)移动distance距离
  • turtle.right(degree) -绘制方向向右旋转degree度
  • turtle.left(degree) -绘制方向向左旋转degree度
  • turtle.exitonclick() -点击关闭图形窗口

先小小的试验下

"""
    作者:xxj
    功能:bulingbuling_pentagram
    版本:1.0
    时间:2019.1.17
"""
import turtle

def main():
    """
        主函数
    """

    count = 1

    while count <= 5:
        turtle.forward(250)
        turtle.right(144)
        count = count+1

    turtle.exitonclick()

if __name__ == '__main__':
    main()

在这里插入图片描述

画笔控制函数
  • turtle.penup() -抬起画笔,之后移动画笔不绘制形状(画虚线)
  • turtle.pendown() -落下画笔,之后移动画笔绘制形状
  • turtle.pensize() -设置画笔宽度
  • turtle.pencolor() -设置画笔颜色,常用的颜色:white、black、grey、darkgreen、gold、violet、purple

先小小的试验下,顺便把代码改成迭代

"""
    author:xxj
    function:recursive_pentagram
    version:2.0
    time:2019.1.17
"""
import turtle



def draw_recursive_pentagram(size):
    """
        迭代绘制五角星
    """
    # 绘制五角星功能
    count = 1
    while count <= 5:
        turtle.forward(size)
        turtle.right(144)
        count += 1

    #五角星绘制完成,更新参数
    size += 10
    if size <= 100:
        draw_recursive_pentagram(size)




def main():
    """
        主函数
    """
    turtle.penup()
    turtle.bk(400)
    turtle.pendown()
    turtle.pensize(2)
    turtle.pencolor('red')
    turtle.speed(0.1)

    size = 50
    draw_recursive_pentagram(size)

    turtle.exitonclick()


if __name__ == '__main__':
    main()

在这里插入图片描述

大BOSS:利用递归绘制分形树

思路分析:

角度转换:先向右转M°,一直绘制到枝丫长度小于0,再回到节点,再向左转两个M°,即2M°,一直绘制,最后再向右转M°回到正中间。
在这里插入图片描述

"""
    author:xxj
    function:recursive_fractal_tree
    version:1.0
    time:2019.1.18
"""
import turtle

def draw_branch(branch_length):
    """
        绘制分形树
    """
    if branch_length <= 5:
        turtle.color('green')

    if branch_length > 5:
        # 绘制右侧树枝
        turtle.forward(branch_length)
        print('向前',branch_length)
        turtle.right(20)
        print('右转 20')
        draw_branch(branch_length - 15)

        # 绘制左侧树枝
        turtle.left(40)
        print('左转 40')
        draw_branch(branch_length - 15)

        # 返回之前的树枝
        turtle.right(20)
        print('右转 20')
        turtle.backward(branch_length)
        print('向后', branch_length)
        turtle.color('brown')

def main():
    """
        主函数
    """
    turtle.left(90)
    turtle.penup()
    turtle.backward(180)
    turtle.pendown()
    turtle.screensize(800, 600, 'black')
    turtle.pensize(2)
    turtle.color('brown')
    draw_branch(100)
    turtle.penup()
    turtle.goto(0, -180)
    turtle.write("居居老师和颖宝冲鸭", font=("Arial", 20, "normal"))
    turtle.exitonclick()

if __name__ == '__main__':
    main()

在这里插入图片描述
教程:小象学院,梁斌老师,讲的贼好~

最后表扬下认真学习的自己

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值