这几天又刷完了一遍火影,中二之魂一下子上来了,于是突发奇想,用python中的turtle画图库画一个宇智波一族的万花筒写轮眼。
本次用到的代码知识如下:
import turtle #导入turtle库
from math import sqrt #导入开根的库
turtle.speed() #画笔移动的速度
turtle.pensize() #画笔的粗细
turtle.color() #设置画笔颜色
#将画笔移动到坐标(x,y)处
turtle.penup()
turtle.moveto(x,y)
turtle.pendown()
#画圆
turtle.circle(radius,extent) #radius表示半径,正值时逆时针旋转;extent表示度数
#填充图形
turtle.fillcolor()
turtle.beginfill()
turtle.endfill()
笔者是将佐助的万花筒写轮眼画了出来,其原图片如下图:

可以将万花筒写轮眼拆成三部分:
最外面的大圆,底色为黑色;
内部的3个扇扇,底色为红色;
中间的小圆,底色为黑色。
代码如下:
import turtle
from math import sqrt
def penMove(x,y):
p=turtle
p.penup()
p.goto(x,y)
p.pendown()
p=turtle
p.speed(3)
p.pensize(5)
p.color('black')
#画出整体轮廓
p.fillcolor('black')
penMove(0,-200)
p.begin_fill()
p.circle(200)
p.end_fill()
#画内部细节
#1
p.color('black')
p.fillcolor('red')
p.speed(20)
p.pensize(2)
p.begin_fill()
p.left(45)
p.circle(200*sqrt(2),90)
p.left(90)
p.circle(200*sqrt(2),90)
p.end_fill()
#2
p.fillcolor('red')
p.begin_fill()
penMove(100*sqrt(3),-100*sqrt(2)+35)
p.left(155)
p.circle(200*sqrt(2),90)
p.left(90)
p.circle(200*sqrt(2),90)
p.end_fill()
#3
p.fillcolor('red')
p.begin_fill()
penMove(-100*sqrt(3),-100*sqrt(2)+35)
p.right(38)
p.circle(200*sqrt(2),90)
p.left(90)
p.circle(200*sqrt(2),90)
p.end_fill()
penMove(100*sqrt(3),-100*sqrt(2)+35)
p.left(218)
p.circle(200*sqrt(2),90)
p.left(90)
p.circle(200*sqrt(2),90)
penMove(0,-200)
p.left(25)
p.circle(200*sqrt(2),90)
p.left(90)
p.circle(200*sqrt(2),90)
#画中间的圆
penMove(-20,-35)
p.speed(3)
p.fillcolor('black')
p.begin_fill()
p.circle(30)
p.end_fill()
p.done()
最后运行的结果如下:

这是眼力的战斗,别小看宇智波!