大家好,本文将围绕python中用于绘制弧形的函数展开说明,python用于绘制弧形的函数是一个很多人都想弄明白的事情,想搞清楚python中圆弧怎么画需要先了解以下几个事情。
Python学习笔记(二)——Python基本图形绘制
这次笔记主要学习了以下内容:
-
turtle库的绘图窗体、空间坐标体系、角度坐标体系
-
RGB色彩体系、库引用
-
画笔控制函数、方向控制函数、运动控制函数
-
循环语句与range()函数
不同编程语言的初心和适用对象
编程语言 | 学习内容 | 语言本质 | 解决问题 | 适用对象 |
---|---|---|---|---|
C语言 | 指针、内存、数据类型 | 理解计算机系统结构 | 性能 | 计算机类专业 |
Java | 对象、跨平台、运行时 | 理解主客体关系 | 跨平台 | 软件类专业 |
C++ | 对象、多态、继承 | 理解主客体关系 | 大规模程序 | 计算机类专业 |
VB | 对象、按钮、文本框 | 理解交互逻辑 | 桌面应用 | 不确定,少 |
Python | 编辑逻辑、第三方库 | 理解问题求解 | 各类问题 | 所有专业 |
Python语言是通用语言,语法简洁,可读性高,较少的底层语法语言,多种编程方式,支持中文字符,具有计算生态性(可以使用第三方库)。
编程语言的种类:机器语言、汇编语言、高级语言、超级语言(集成开发,如Python)
Python蟒蛇绘制
#PythonDraw.py
import turtle
turtle.setup(650, 350, 200, 200)
turtle.penup()
turtle.fd(-250)
turtle.pendown()
turtle.pensize(25)
turtle.pencolor("purple")
turtle.seth(-40)
for i in range(4):
turtle.circle(40, 80)
turtle.circle(-40, 80)
turtle.circle(40, 80/2)
turtle.fd(40)
turtle.circle(16, 180)
turtle.fd(40 * 2/3)
turtle.done()
import 保留字,引入了一个绘图库,名字叫turtle
程序参数的改变:
Python蟒蛇的颜色:黑色、白色、七彩色…
Python蟒蛇的长度:1节、3节、10节…
Python蟒蛇的方向:向左走、斜着走…
turtle库: turtle(海龟)库是turtle绘图体系的Python实现pythonturtle画雪人。
-
turtle绘图体系:1969年诞生,主要用于程序设计入门
-
Python语言的标准库之一
-
入门级的图形绘制函数库
标准库: 随解释器直接安装到操作系统中的功能模块
Python计算生态 = 标准库 + 第三方库
第三方库: 需要经过安装才能使用的功能模块
库Library、包Package、模块Module,统称模块
turtle的原理: turtle是一种真实的存在。一只海龟在窗体正中心,在画布上游走。走过的轨迹形成了绘制的图形。海龟由程序控制,可以改变颜色、改变宽度。
turtle的绘图窗体:
- turtle.setup(width, height, startx, stary)
setup() 设置窗体大小及位置,4个参数中后两个参数可选。注意setup()不是必须的。
turtle空间坐标体系: 画布以中心为原点的空间坐标体系。
绝对坐标: 函数goto(x,y)
海龟坐标: 函数circle(radius, angle),bk(d),fd(d)即forward(distance)
turtle角度坐标体系: 画布以空间x轴为0度的角度坐标体系。
绝对角度: 函数seth(angle)即setheading(angle)
海龟角度: 函数left(),right()
上述右边例子,先调用turtle库,海龟起始位置在画布中心,起始方向为水平向右。海龟向左转45,再向前行进150像素,接着右转135度,再向前行进300像素,再左转135度,最后向前行进150像素,得到Z形图。
RGB色彩体系: 由红蓝绿三个颜色组合而成的万物色,覆盖视力所能感知的所有颜色,RGB每色取值范围0-255整数或者0-1小数。
常用RGB色彩
颜色 | RGB整数值 | RGB小数值 |
---|---|---|
white | 255,255,255 | 1,1,1 |
yellow | 255,255,0 | 1,1,0 |
magenta(洋红) | 255,0,255 | 1,0,1 |
cyan(青色) | 0,255,255 | 0,1,1 |
blue | 0,0,255 | 0,0,1 |
black | 0,0,0 | 0,0,0 |
seahell(海贝色) | 255,245,238 | 1,0.96,0.93 |
gold | 255,215,0 | 1,0.84,0 |
prink | 255,192,203 | 1,0.75,0.80 |
brown(棕色) | 165,42,42 | 0.65,0.16,0.16 |
purple | 160,32,240 | 0.63,0.13,0.94 |
tomato | 255,99,71 | 1,0.39,0.28 |
库引用: 扩充Python程序功能的方式。
使用保留字import保留字完成,格式为:
import <库名>
<库名>.<函数名>(<函数参数>)
使用from和import保留字共同完成,格式为:
from <库名> import <函数名>
from <库名> import*
<函数名>(<函数参数>)
#PythonDraw.py
from turtle import*
setup(650, 350, 200, 200)
penup()
fd(-250)
pendown()
pensize(25)
pencolor("purple")
seth(-40)
for i in range(4):
circle(40, 80)
circle(-40, 80)
circle(40, 80/2)
fd(40)
circle(16, 180)
fd(40 * 2/3)
done()
第一种方法不会出现函数重名的问题,第二种方法会出现。函数名字冲突会使程序运行不一致。于是有下述改进方法
使用import和as共同完成,格式为:
import <库名> as <库别名>
<库别名>.<函数名>(<函数参数>)
此法给调用的外部库关联一个更短、更适合自己的名字,会有很大便利。推荐!!!
#PythonDraw.py
import turtle as t
t.setup(650, 350, 200, 200)
t.penup()
t.fd(-250)
t.pendown()
t.pensize(25)
t.pencolor("purple")
t.seth(-40)
for i in range(4):
t.circle(40, 80)
t.circle(-40, 80)
t.circle(40, 80/2)
t.fd(40)
t.circle(16, 180)
t.fd(40 * 2/3)
t.done()
turtle画笔控制函数: penup(), pendown(), pensize(), pencolor()
画笔操作后一直有效,一般成对出现
-
turtle.penup() 别名 turtle.pu() 抬起画笔,海龟在飞行
-
turtle.pendown() 别名 turtle.pd() 落下画笔,海龟在爬行
画笔设置后一直有效,直到下次重新设置
-
turtle.pensize(width) 别名 turtle.width(width) 画笔宽度,海龟的腰围
-
turtle.pencolor(color) color为颜色字符串或RGB值 画笔颜色,海龟在涂装
pencolor(color)的color参数可以有三种形式
颜色字符串 turtle.pencolor(“purple”)
RGB的小数值 turtle.pencolor(0.63,0.13,0.94)
RGB的元组值 turtle.pencolor((0.63,0.13,0.94))
turtle运动控制函数: 控制海龟行进。走直线&走曲线
- turtle.forward(d) 别名 turtle.fd(d) 向前行进,海龟走直线
– d:行进距离,可以为负数
- turtle.circle(r,extent = None) 根据半径r绘制extent角度的弧形
– r:默认圆心在海龟左侧r距离的位置
– extent:绘制角度,默认是360度整圆
注:print(“Hello”,i)输出时逗号,表现为空格
turtle方向控制函数: 控制海龟面对方向。绝对角度&海龟角度
- turtle.setheading(angle) 别名 turtle.seth(angle) 改变行进方向,海龟走角度
–angle:改变行进方向,海龟走角度
-
turtle.left(angle) 海龟向左转
-
turtle.right(angle) 海龟向右转
– angle:在海龟当前行进方向上旋转的角度
循环语句: 按照一定次数循环执行的一组语句。格式为:
for <变量> in range (<参数>):
<被循环执行的语句>
<变量>每次循环的计数,0到<次数>-1
range函数: 产生循环计数序列。
– range(N)产生0到N-1的整数序列,共N个
– range(M,N)产生M到N-1的整数序列,共N-M个
turtle.done() 程序运行后不会自动退出
五星红旗绘制
#national flag draw
import turtle
turtle.setup(600,400,0,0)
turtle.bgcolor("red")
turtle.fillcolor("yellow")
turtle.color('yellow')
turtle.speed(10)
# 主星
turtle.begin_fill()
turtle.up()
turtle.goto(-280,100)
turtle.down()
for i in range (5):
turtle.forward(150)
turtle.right(144)
turtle.end_fill()
# 副星
turtle.begin_fill()
turtle.up()
turtle.goto(-100,180)
turtle.setheading(305)
turtle.down()
for i in range (5):
turtle.forward(50)
turtle.left(144)
turtle.end_fill()
turtle.begin_fill()
turtle.up()
turtle.goto(-50,110)
turtle.setheading(30)
turtle.down()
for i in range (5):
turtle.forward(50)
turtle.right(144)
turtle.end_fill()
turtle.begin_fill()
turtle.up()
turtle.goto(-40,50)
turtle.setheading(5)
turtle.down()
for i in range (5):
turtle.forward(50)
turtle.right(144)
turtle.end_fill()
turtle.begin_fill()
turtle.up()
turtle.goto(-100,10)
turtle.setheading(300)
turtle.down()
for i in range (5):
turtle.forward(50)
turtle.left(144)
turtle.end_fill()
turtle.hideturtle()
turtle.done()