当前位置:   article > 正文

Python实操笔记(2)——海龟绘图法绘制有层次感的奥运五环_海龟画图五环

海龟画图五环

绘制有层次感的奥运五环

在这里插入图片描述

五环的尺寸

以圆环内圈半径为单位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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

黑色(长)
在这里插入图片描述
大致思路是
直接将光标放到黑色环形的顶点,然后围成一个封闭的图形

#黑色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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

剩下的两个图形其实和之前两个差不多。
关键点就是要找到开始画图的点
还有一点不同就是颜色要换。
大家可以自己敲一下代码

绘制第二层

第二层是最简单的一层
只要找到初始点,然后画两个圆,再在两个圆之间填充上颜色就行。
但是
上面说了

begin_fill()
之间的封闭图形都会被填上颜色
end_fill()
  • 1
  • 2
  • 3

如果我们这样写代码

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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

竟然可以得到一个圆环(○´・д・)ノ
在这里插入图片描述
但是这样写

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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

就不能得到一个圆环
在这里插入图片描述
???
我当初写这个的时候是这么做的
画两个半圆环,然后填充上颜色。代码如下

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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
绘制第三层

说到这里感觉也没什么好说的了,相信大致方法大家都已经掌握了。
找到开始的位置,然后画出一个封闭图形,最后填充颜色。
大家可以自己亲手试试。

完成的动图

在这里插入图片描述

后记

画一个有层次感的五环其实并不困难,最主要的其实还是麻烦。
如果大家有什么更简单的方法,可以和我交流。
完整的代码在附录里。
如果这篇文章,或者代码有问题,可以在评论区指出,谢谢大家!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/179843?site
推荐阅读
相关标签
  

闽ICP备14008679号