继续谈利用海龟库(turtle库)做图。在这篇文章(Python内置海龟(turtle)库绘图命令详解(一))中已经介绍了turtle的一些基本画图命令,包括画布的设计、画笔属性与状态的设置以及画笔的运动命令。今天我们重点谈一谈如何利用turtle直角坐标系绘制一些比较复杂的图形。
1.turtle库直角坐标系的相关知识
turtle海龟库直角坐标系中点坐标的寻找方法与数学中的笛卡尔平面直角坐标系是一致的,它的坐标原点在turtle的home(即画布的中间位置),故,其坐标系的具体形式如下:
当turtle画布上的坐标系确定以后,我们就可以去定位画布上的任何点,通过控制画笔的移动,让画笔按坐标点的位置来做精确的移动,从而就可以来实现绘制一些比较复杂的图形了。
关于按坐标点,实现画笔移动的相关命令主要包括:
命令说明
turtle.goto(x,y)让画笔沿直线移动到坐标点(x,y)处
turtle.setpos(x,y)与goto命令一样,作用也是让画笔沿直线移动到坐标点(x,y)处
turtle.sex(x)只改变x坐标,让画笔产生移动
turtle.sex(y)只改变y坐标,让画笔产生移动
x,y=turtle.pos()返回画笔当前位置的坐标
turtle.seth(degree)用于设置画笔的方向,参数degree为画笔方向与海龟坐标系x轴正向的夹角度数。
2.用turtle库直角坐标系绘图实例
为了让大家进一步熟悉用海龟库的坐标系画图,现在开始利用海龟库直角坐标系绘制几个常见的图形。
(1).绘制直角三角形
上图可见,此直角三角形绘制在第一象限,所以三角形每个顶点的坐标全部为正。三个点的坐标分别选择为A(100,100)、B(200,100)、C(100,200)。可见所绘制的直角三角形AC=100,AB=100,所以为一个等腰直角三角形。由于A点的y坐标与B点的y坐标相等,所以,AB平行于x轴,由于A点的x坐标与C点的x坐标相等,所以,AC平行于y轴。
代码为:
turtle.up()
turtle.goto(100,100)
turtle.down()
turtle.fillcolor('red')
turtle.begin_fill()
turtle.goto(200,100)
turtle.goto(100,200)
turtle.goto(100,100)
turtle.end_fill()
(2).绘制梯形
上图可见,此梯形绘制在第四象限,所以梯形形每个顶点的坐标中,x坐标为正,y坐标为负。四个点的坐标分别选择为D(100,-100)、E(200,-100)、F(250,-200)、G(50,-200)。可见所绘制的直角三角形DE=100,GF=200。由于D点的y坐标与E点的y坐标相等,所以,DE平行于x轴,由于G点的y坐标与F点的y坐标相等,所以,GF也平行于x轴。
代码为:
turtle.up()
turtle.fillcolor('yellow')
turtle.begin_fill()
turtle.goto(100,-100)
turtle.down()
turtle.goto(200,-100)
turtle.goto(250,-200)
turtle.goto(50,-200)
turtle.goto(100,-100)
turtle.end_fill()
(3). 画扇形
上图可见,此扇形绘制横跨第一与第四象限,该扇形的半径是200像素,顶点主要由点O、点H与点J构成,其中点O是坐标的原点,点H坐标为(0,-200),点J坐标由参数方程来确定,坐标为:
(200*math.cos(30*math.pi/180),200*math.sin(30*math.pi/180))
代码为:
import math
turtle.up()
turtle.goto(0,-200)
turtle.seth(0)
turtle.down()
turtle.fillcolor('blue')
turtle.begin_fill()
turtle.circle(200,120)
turtle.goto(0,0)
turtle.goto(0,-200)
turtle.end_fill()
(-end-)
扫码关注公众号
推荐阅读:
Python内置海龟(turtle)库绘图命令详解(一)
python海龟库(turtle)中颜色的表示方法