zoukankan      html  css  js  c++  java
  • 064 实例16-玫瑰花绘制

    一、"玫瑰花绘制"问题分析

    1.1 问题分析

    玫瑰花绘制

    064-实例16-玫瑰花绘制-01.jpg?x-oss-process=style/watermark

    • 需求:用Python绘制一朵玫瑰花,献给所思所念

    • 输入:你的想象力!

    • 输出:玫瑰花

    • 绘制机理:turtle基本图形绘制

    • 绘制思想:因人而异

    • 思想有多大、世界就有多大

    二、"玫瑰花绘制"实例展示

    2.1 定义一个曲线绘制函数

    def DegreeCurve(n, r, d=1):
        for i in range(n):
            t.left(d)
            t.circle(r, abs(d))
    

    2.2 初始位置设定

    t.begin_fill()
    s = 0.2  ##  size
    t.setup(450 * 5 * s, 750 * 5 * s)
    t.pencolor("black")
    t.fillcolor("red")
    t.speed(100)
    t.penup()
    t.goto(0, 900 * s)
    t.pendown()
    

    2.3 绘制花朵形状

    t.begin_fill()
    t.circle(200 * s, 30)
    DegreeCurve(60, 50 * s)
    t.circle(200 * s, 30)
    DegreeCurve(4, 100 * s)
    t.circle(200 * s, 50)
    DegreeCurve(50, 50 * s)
    t.circle(350 * s, 65)
    DegreeCurve(40, 70 * s)
    t.circle(150 * s, 50)
    DegreeCurve(20, 50 * s, -1)
    t.circle(400 * s, 60)
    DegreeCurve(18, 50 * s)
    t.fd(250 * s)
    t.right(150)
    t.circle(-500 * s, 12)
    t.left(140)
    t.circle(550 * s, 110)
    t.left(27)
    t.circle(650 * s, 100)
    t.left(130)
    t.circle(-300 * s, 20)
    t.right(123)
    t.circle(220 * s, 57)
    t.end_fill()
    

    2.4 绘制花枝形状

    t.left(120)
    t.fd(280 * s)
    t.left(115)
    t.circle(300 * s, 33)
    t.left(180)
    t.circle(-300 * s, 33)
    DegreeCurve(70, 225 * s, -1)
    t.circle(350 * s, 104)
    t.left(90)
    t.circle(200 * s, 105)
    t.circle(-500 * s, 63)
    t.penup()
    t.goto(170 * s, -30 * s)
    t.pendown()
    t.left(160)
    DegreeCurve(20, 2500 * s)
    DegreeCurve(220, 250 * s, -1)
    

    2.5 绘制一个绿色叶子

    t.fillcolor('green')
    t.penup()
    t.goto(670 * s, -180 * s)
    t.pendown()
    t.right(140)
    t.begin_fill()
    t.circle(300 * s, 120)
    t.left(60)
    t.circle(300 * s, 120)
    t.end_fill()
    t.penup()
    t.goto(180 * s, -550 * s)
    t.pendown()
    t.right(85)
    t.circle(600 * s, 40)
    

    2.6 绘制另一个绿色叶子

    t.penup()
    t.goto(-150 * s, -1000 * s)
    t.pendown()
    t.begin_fill()
    t.rt(120)
    t.circle(300 * s, 115)
    t.left(75)
    t.circle(300 * s, 100)
    t.end_fill()
    t.penup()
    t.goto(430 * s, -1070 * s)
    t.pendown()
    t.right(30)
    t.circle(-600 * s, 35)
    t.done()
    t.end_fill()
    

    2.7 全代码

    import turtle as t
    
    
    # 定义一个曲线绘制函数
    def DegreeCurve(n, r, d=1):
        for i in range(n):
            t.left(d)
            t.circle(r, abs(d))
    
    
    # 初始位置设定
    t.begin_fill()
    s = 0.2  # size
    t.setup(450 * 5 * s, 750 * 5 * s)
    t.pencolor("black")
    t.fillcolor("red")
    t.speed(100)
    t.penup()
    t.goto(0, 900 * s)
    t.pendown()
    
    # 绘制花朵形状
    t.begin_fill()
    t.circle(200 * s, 30)
    DegreeCurve(60, 50 * s)
    t.circle(200 * s, 30)
    DegreeCurve(4, 100 * s)
    t.circle(200 * s, 50)
    DegreeCurve(50, 50 * s)
    t.circle(350 * s, 65)
    DegreeCurve(40, 70 * s)
    t.circle(150 * s, 50)
    DegreeCurve(20, 50 * s, -1)
    t.circle(400 * s, 60)
    DegreeCurve(18, 50 * s)
    t.fd(250 * s)
    t.right(150)
    t.circle(-500 * s, 12)
    t.left(140)
    t.circle(550 * s, 110)
    t.left(27)
    t.circle(650 * s, 100)
    t.left(130)
    t.circle(-300 * s, 20)
    t.right(123)
    t.circle(220 * s, 57)
    t.end_fill()
    
    # 绘制花枝形状
    t.left(120)
    t.fd(280 * s)
    t.left(115)
    t.circle(300 * s, 33)
    t.left(180)
    t.circle(-300 * s, 33)
    DegreeCurve(70, 225 * s, -1)
    t.circle(350 * s, 104)
    t.left(90)
    t.circle(200 * s, 105)
    t.circle(-500 * s, 63)
    t.penup()
    t.goto(170 * s, -30 * s)
    t.pendown()
    t.left(160)
    DegreeCurve(20, 2500 * s)
    DegreeCurve(220, 250 * s, -1)
    
    # 绘制一个绿色叶子
    t.fillcolor('green')
    t.penup()
    t.goto(670 * s, -180 * s)
    t.pendown()
    t.right(140)
    t.begin_fill()
    t.circle(300 * s, 120)
    t.left(60)
    t.circle(300 * s, 120)
    t.end_fill()
    t.penup()
    t.goto(180 * s, -550 * s)
    t.pendown()
    t.right(85)
    t.circle(600 * s, 40)
    
    # 绘制另一个绿色叶子
    t.penup()
    t.goto(-150 * s, -1000 * s)
    t.pendown()
    t.begin_fill()
    t.rt(120)
    t.circle(300 * s, 115)
    t.left(75)
    t.circle(300 * s, 100)
    t.end_fill()
    t.penup()
    t.goto(430 * s, -1070 * s)
    t.pendown()
    t.right(30)
    t.circle(-600 * s, 35)
    t.done()
    t.end_fill()
    

    064-实例16-玫瑰花绘制-02.jpg?x-oss-process=style/watermark

    三、"玫瑰花绘制"举一反三

    3.1 艺术之于编程,设计之于编程

    • 艺术:思想优先,编程是手段
    • 设计:想法和编程同等重要
    • 工程:编程优先,思想次之

    3.2 编程不重要,思想才重要!

    • 认识自己:明确自己的目标,有自己的思想(想法)
    • 方式方法:编程只是手段,熟练之,未雨绸缪为思想服务
    • 为谁编程:将自身发展与祖国发展相结合,创造真正价值
  • 相关阅读:
    从开发人员角度对软件测试的些许理解
    ObjectiveC的语法
    HttpModule与HttpHandler使用
    我为什么学习HASKELL?
    Linux下C语言编程环境Make命令和Makefile
    一个简单的验证框架
    程序员之路
    ObjectiveC语法之ObjectiveC语言和IOS系统(简介,语法,系统结构)
    Teamcity
    Python进阶 错误处理
  • 原文地址:https://www.cnblogs.com/abdm-989/p/14130115.html
Copyright © 2011-2022 走看看