zoukankan      html  css  js  c++  java
  • 用Python画一只兔子——turtle库circle画圆函数的详细用法介绍

    周末学习了一下turtle库的基本函数,试着画了一只大耳朵小兔子,灵感来源是jellycat邦尼兔。turtle库中circle()函数用来画弧,但和通常先确定原点,再根据半径、夹角画弧的方法有所不同。使用之后,便能理解circle()函数的巧妙。收获是:边想边做边改胜过完美的空想。 

    绘制效果如图 :

     

     在circle(radius,extent)函数中,参数radius取像素值、extent取角度的整数值,两参数均可取正负值。运行以下代码,可以直观地理解circle(radius,extent)函数参数正负值时的绘制特点:

     1 python开发IT交流群:887934385 分享源码等相关资料
     2 from turtle import *
     3 pensize(5)
     4 pencolor('green')
     5 circle(100,90)
     6  
     7 pu()
     8 goto(0,0)
     9 seth(0)
    10 pd()
    11 pencolor('orange')
    12 circle(100,-90)
    13  
    14 pu()
    15 goto(0,0)
    16 seth(0)
    17 pd()
    18 pencolor('blue')
    19 circle(-100,90)
    20  
    21 pu()
    22 goto(0,0)
    23 seth(0)
    24 pd()
    25 pencolor('red')
    26 circle(-100,-90)

    circle()函数以画笔当前方向(y')为y轴方向,以经过画笔当前绝对坐标(x0,假设y0=0)、垂直于y轴的方向为x轴方向,则圆心(即原点)坐标为(x0-radius=0,0),由当前画笔位置(x0,y0)为弧线起始点,画出extent角度的圆弧。

    为了方便理解,我绘制了circle()函数的相对坐标体系,如下图:需要注意的是:radius为正时,圆心在当前位置左侧(如下图);radius为负时,圆心在当前位置右侧;extent为正时,顺画笔当前方向绘制,extent为负时,逆画笔当前方向绘制。

     circle()函数可以以画笔当前位置为切点,画出与(画笔当前方向所在直线为)切线相切的任意圆弧。所以在绘制曲线时十分自由好用。抛下【用圆规先确定圆心再画圆】的惯常思维,慢慢使用便能理解circle()函数的巧妙。 以上为个人的学习理解,初识turtle,不当之处欢迎指正。

    兔の绘图代码如下:

      1 python开发IT交流群:887934385 分享源码等相关资料
      2 #绘制大耳朵兔
      3 from turtle import *
      4 speed(10)
      5  
      6 #小兔的面部
      7 color('pink')
      8 pensize(5)
      9 circle(radius=100)#
     10  
     11 #眼睛
     12 pencolor('black')
     13 #左眼
     14 pu()
     15 goto(-45,92)
     16 pd()
     17 begin_fill()
     18 color((0,0,0),(0,0,0.1))
     19 circle(radius=15)
     20 #右眼
     21 pu()
     22 goto(45,92)
     23 pd()
     24 circle(radius=15)
     25 end_fill()
     26  
     27 #鼻子
     28 pu()
     29 goto(20,60)
     30 color('pink')
     31 pd()
     32 begin_fill()
     33 goto(-20,60)
     34 goto(0,45)
     35 goto(20,60)
     36 end_fill()
     37  
     38 #
     39 goto(0,45)
     40 goto(0,40)
     41 seth(-90)
     42 circle(10,120)
     43 pu()
     44 goto(0,40)
     45 seth(-90)
     46 pd()
     47 circle(-10,120)
     48  
     49  
     50 #小兔的耳朵
     51 #左耳
     52 pu()
     53 goto(-60,180)#
     54 seth(200)
     55 pd()
     56 circle(radius=350,extent=90)
     57 goto(-98,110)
     58 #右耳
     59 pu()
     60 goto(60,180)#
     61 seth(-20)
     62 pd()
     63 circle(radius=-350,extent=90)
     64 goto(98,110)
     65  
     66 #小兔的身体
     67 pu()
     68 goto(20,3)
     69 seth(-25)
     70 pd()
     71 circle(radius=-250,extent=25)
     72 circle(radius=-135,extent=260)
     73 seth(50)
     74 circle(radius=-250,extent=25)
     75  
     76 ##小兔的胳膊
     77 #左臂
     78 pu()
     79 seth(180)
     80 goto(-30,-3)
     81 pd()
     82 #小短胳膊
     83 ##circle(radius=270,extent=20)
     84 ##circle(radius=20,extent=190)
     85 circle(radius=248,extent=30)
     86 circle(radius=29,extent=185)
     87 #右臂
     88 pu()
     89 seth(0)
     90 goto(30,-3)
     91 pd()
     92 circle(radius=-248,extent=30)
     93 circle(radius=-27,extent=184)
     94  
     95 ##小兔的脚
     96 ##左脚
     97 pu()
     98 goto(-162,-260)#
     99 pd()
    100 seth(0)
    101 circle(radius=41)
    102 #右脚
    103 pu()
    104 goto(164,-260)
    105 pd()
    106 circle(radius=41)
    107  
    108 done()
  • 相关阅读:
    用word2010发个blog
    停止调试无法关闭控制台
    D11.5.8,Lingo中不支持AS3的ExternalInterface接口
    Lingo03 通用脚本和自定义handler
    Lingo01 术语
    Lingo09 Sprite
    Lingo动态创建script member
    tut11脚本基础
    诡异失败的导入对话框
    Lingo3D01 3D Cast Member的组成
  • 原文地址:https://www.cnblogs.com/pypypy/p/12156431.html
Copyright © 2011-2022 走看看