page contents

circle()函数实例教程:用Python画一只兔子

学习了一下turtle库的基本函数,试着画了一只大耳朵小兔子,灵感来源是jellycat邦尼兔。turtle库中circle()函数用来画弧,但和通常先确定原点,再根据半径、夹角画弧的方法有所不同。使用之后,...

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

绘制效果如图 :


v2-962a49cb084b64a21a1600bd040c5d14_720w.jpg


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

from turtle import *pensize(5)pencolor('green')circle(100,90) pu()goto(0,0)seth(0)pd()pencolor('orange')circle(100,-90) pu()goto(0,0)seth(0)pd()pencolor('blue')circle(-100,90) pu()goto(0,0)seth(0)pd()pencolor('red')circle(-100,-90)

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

为了方便理解,我绘制了circle()函数的相对坐标体系,如下图。

v2-a9654a06bf18c7dc01d047e8caf4b59f_720w.jpg

需要注意的是:radius为正时,圆心在当前位置左侧(如下图);radius为负时,圆心在当前位置右侧;extent为正时,顺画笔当前方向绘制,extent为负时,逆画笔当前方向绘制。

circle()函数可以以画笔当前位置为切点,画出与(画笔当前方向所在直线为)切线相切的任意圆弧。所以在绘制曲线时十分自由好用。

抛下用圆规先确定圆心再画圆的惯常思维,慢慢使用便能理解circle()函数的巧妙。

以上为个人的学习理解,初识turtle,不当之处欢迎指正。

以下为代码:

#绘制大耳朵兔from turtle import *speed(10) #小兔的面部color('pink')pensize(5)circle(radius=100)#脸 #眼睛pencolor('black')#左眼pu()goto(-45,92)pd()begin_fill()color((0,0,0),(0,0,0.1))circle(radius=15)#右眼pu()goto(45,92)pd()circle(radius=15)end_fill() #鼻子pu()goto(20,60)color('pink')pd()begin_fill()goto(-20,60)goto(0,45)goto(20,60)end_fill() #嘴goto(0,45)goto(0,40)seth(-90)circle(10,120)pu()goto(0,40)seth(-90)pd()circle(-10,120) #小兔的耳朵#左耳pu()goto(-60,180)#seth(200)pd()circle(radius=350,extent=90)goto(-98,110)#右耳pu()goto(60,180)#seth(-20)pd()circle(radius=-350,extent=90)goto(98,110) #小兔的身体pu()goto(20,3)seth(-25)pd()circle(radius=-250,extent=25)circle(radius=-135,extent=260)seth(50)circle(radius=-250,extent=25) ##小兔的胳膊#左臂pu()seth(180)goto(-30,-3)pd()#小短胳膊##circle(radius=270,extent=20)##circle(radius=20,extent=190)circle(radius=248,extent=30)circle(radius=29,extent=185)#右臂pu()seth(0)goto(30,-3)pd()circle(radius=-248,extent=30)circle(radius=-27,extent=184) ##小兔的脚##左脚pu()goto(-162,-260)#pd()seth(0)circle(radius=41)#右脚pu()goto(164,-260)pd()circle(radius=41) done()

  • 发表于 2020-02-27 16:50
  • 阅读 ( 741 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

1135 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1316 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章