Python二次封装画圆函数绘制彩色同心圆
Python库默认的绘图circle函数绘制的圆是以当前海龟箭头方向左侧为圆心方向,y轴向上半径r的距离为圆心,绘制一个圆,这个方法不好用,每次都要算。学生课后问,是否可以使用圆心+半径的方法绘制,但是没有函数,只能自己封装一个。
思路如下:
(1)函数的参数(x,y,r)分别为圆心的坐标x和y,半径r。问题来了,可以用goto(X,Y)去圆心,但是导致绘图的圆心在y轴向上移动了r的距离,因此需要去goto(X,Y-r),这样就消除了半径的影响。
(2)箭头去圆心的时候,不知道箭头的方向,因此需要对海龟的箭头方法复位为0度,利用seth(0)函数。
(3)圆如果需要填充颜色,可以利用rgb模式传递颜色。
效果如下,代码如下:
import turtle
import random
#以(x,y)为圆心,画半径为r的圆,颜色为(cr,cg,cb)
def mycircle(x,y,r,cr,cg,cb):
mytl1.penup()
mytl1.goto(x,y-r)
mytl1.seth(0)
mytl1.pendown()
mytl1.color(cr,cg,cb)
mytl1.begin_fill()
mytl1.circle(r)
mytl1.end_fill()
mytl1=turtle.Turtle()
turtle.tracer(0) #画面顺完成
turtle.colormode(255) #颜色模式255的,RGB值
# mytl1.speed(0) #画面速度最快
# mytl1.hideturtle() #隐藏海龟箭头
mytl1.shape("turtle") #海龟形状
for i in range(10,0,-1):
cr=random.randint(0,255) #随机颜色
cg = random.randint(0, 255)
cb= random.randint(0, 255)
mycircle(60,60,i*20,cr,cg,cb)
mytl1.screen.mainloop()