赞
踩
以圆环内圈半径为单位1,外圈半径为1.2;相邻圆环圆心水平距离2.6;
两排圆环圆心垂直距离为1.1。颜色从左到右依次时蓝、黄、黑、绿、红。
在实际绘图中,将内圈设为50,外圈为60,相邻圆环水平距离为130,两排圆环圆心垂直距离为55.
首先推断出圆环的坐标,我们设最左边的点为(0,0),则从左到右最左边的点依次为(0,0),(65,-55),(130,0),(195,-55),(260,0)
绘制有层次感的奥运五环其实不难,就是有点麻烦。我的初步想法是将每个环分成不同的部分,然后分别绘制,而不是一个画一整个圆。
所以我把五环分成了三个层次 。
第一层是上面三个环被遮住的部分
也就是
我们为了绘图的方便性将它分成不同的部分
第二层压在第一层上
中间层就是下面两个环
中间层的绘制特别方便,当然这也是精心设计的。
顶层压在第二层上
第一层有4个部分
蓝色(小)
大致思路是
从起点(0,0)开始,先找到位置,再围成一个封闭的图形
#蓝色45°
turtle.setheading(90) #设置箭头方向
turtle.penup() #抬起?(这样笔迹就不会显示出来)
turtle.circle(-60,225) #顺时针转,半径为60,旋转的圆心角为225°
turtle.color("blue","blue")#设置pencolor和fillcolor
turtle.pendown() #放下?(这样笔迹就会显示出来)
turtle.begin_fill() #开始填充颜色
turtle.circle(-60,45) #顺时针转,半径60,旋转的圆心角为45°
turtle.right(90) #顺时针旋转90°
turtle.forward(10) #向前走10个像素点
turtle.right(90)
turtle.circle(50,45) #逆时针转,半径为50,旋转的圆心角为45°
turtle.right(90)
turtle.forward(10)
turtle.end_fill() #填充颜色结束,在其中的封闭图形都会被填充上fillcolor
黑色(长)
大致思路是
直接将光标放到黑色环形的顶点,然后围成一个封闭的图形
#黑色135°
turtle.penup()
turtle.setposition(190,60) #直接将海龟放到黑色环形的最顶点
turtle.setheading(-90) #设置向下的方向
turtle.pendown()
turtle.color("black","black")
turtle.begin_fill()
turtle.forward(10)
turtle.right(90)
turtle.circle(50,135)
turtle.left(90)
turtle.forward(-10)
turtle.left(90)
turtle.circle(-60,135)
turtle.end_fill()
剩下的两个图形其实和之前两个差不多。
关键点就是要找到开始画图的点。
还有一点不同就是颜色要换。
大家可以自己敲一下代码。
第二层是最简单的一层
只要找到初始点,然后画两个圆,再在两个圆之间填充上颜色就行。
但是
上面说了
begin_fill()
之间的封闭图形都会被填上颜色
end_fill()
如果我们这样写代码
turtle.penup()
turtle.setposition(65,-55)
turtle.setheading(90)
turtle.pendown()
turtle.pencolor("yellow")
turtle.fillcolor("yellow")
turtle.begin_fill()
turtle.circle(60)
turtle.right(90)
turtle.forward(10)
turtle.right(90)
turtle.circle(50)
turtle.end_fill()
竟然可以得到一个圆环(○´・д・)ノ
但是这样写
turtle.penup()
turtle.setposition(65,-55)
turtle.setheading(90)
turtle.pendown()
turtle.pencolor("yellow")
turtle.fillcolor("yellow")
turtle.begin_fill()
turtle.circle(-60)
turtle.right(90)
turtle.forward(10)
turtle.left(90) #这里改动
turtle.circle(-50) #这里改动
turtle.end_fill()
就不能得到一个圆环
???
我当初写这个的时候是这么做的
画两个半圆环,然后填充上颜色。代码如下
turtle.penup() turtle.setposition(65,-55) turtle.setheading(90) turtle.pendown() turtle.pencolor("yellow") turtle.fillcolor("yellow") turtle.begin_fill() turtle.circle(-60,180) turtle.right(90) turtle.forward(10) turtle.right(90) turtle.circle(50,180) turtle.right(90) turtle.forward(10) turtle.end_fill() turtle.setheading(-90) turtle.begin_fill() turtle.circle(60,180) turtle.right(90) turtle.forward(-10) turtle.right(90) turtle.circle(-50,180) turtle.right(90) turtle.backward(10) turtle.end_fill()
说到这里感觉也没什么好说的了,相信大致方法大家都已经掌握了。
找到开始的位置,然后画出一个封闭图形,最后填充颜色。
大家可以自己亲手试试。
画一个有层次感的五环其实并不困难,最主要的其实还是麻烦。
如果大家有什么更简单的方法,可以和我交流。
完整的代码在附录里。
如果这篇文章,或者代码有问题,可以在评论区指出,谢谢大家!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。