用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()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM