旋转的太极图
turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x 轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。
需要的模块
只需要一个turtle库
import turtle
需要的模块如下↓
turtle.setheading()
#快速绘图
turtle.forward()
#向当前画笔方向移动distance像素长
turtle.backward()
#向当前画笔相反方向移动distance像素长度
turtle.left()
#逆时针移动
turtle.right()
#顺时针移动
turtle.penup()
#移动时不绘制图形,提起笔,用于另起一个地方绘制时用
turtle.pendown()
#移动时绘制图形,缺省时也为绘制
turtle.fillcolor()
#绘制图形的填充颜色
turtle.end_fill()
#填充完成
turtle.begin_fill()
#准备开始填充图形
turtle.circle()
#以给定半径画圆
turtle.goto()
#将画笔移动到坐标为x,y的位置
turtle.tracer()
#追踪运行轨迹
turtle.hideturtle()
#隐藏箭头显示
画半圆的程序和注释
def yuan(radius,extent = None,colour='white'):
#设置方法yuan,和函数radius,extent,colour
# radius可以看作半径,extent是角度,控制是圆还是半圆或是什么的。
# colour是填充的颜色,默认为白色。
turtle.setheading(dd)
#以x轴方向为起点将方向偏转为dd度,逆时针为正。
turtle.forward(radius)
#前进radius
turtle.left(90)
#左传90度
turtle.pendown()
#落笔
turtle.fillcolor(colour)
#将颜色设为colour
turtle.begin_fill()
#填充颜色
turtle.circle(radius, extent)
#以半径radius,角度extent画园
turtle.end_fill()
#填充
turtle.penup()
#抬笔
turtle.right(90)
#右转90度
turtle.backward(radius)
#后退radius
旋转的太极的程序和注释
# 旋转的太极
a = 8
dd = a
turtle.hideturtle()
while True:
turtle.goto(0, 0)
turtle.tracer(0, 0)
# 画个黑半圆,
yuan(200, extent=180, fc='black')
# 画个白半圆。
yuan(200, extent=-180)
# 向前100,画个黑半圆。
turtle.forward(100)
yuan(100, extent=-180, fc='black')
# 向后200,画个白半圆。
turtle.back(200)
yuan(100, extent=180)
# 顺便画个小黑圆,比白圆大点是因为白圆还有边框,显得大。
yuan(33, fc='black')
# 向后200,画个小白圆。要问我为什么不是向前200,因为我试出来的233333
turtle.back(200)
yuan(30)
# 延时10毫秒,不加这句的话,因为tracer(0,0)是画完才显示,会导致一直啥都画不出来。
# 同时也不能用time.sleep之类的函数,亲测用不了。
turtle.tracer(1, 10)
# 然后下次循环的goto在tracer(0,0)之前这个很有讲究。这相当于是tracer(1,10)执行的一个语句。
# 如果没有的话,会导致tracer(1,10)直接被tracer(0,0)覆盖,还是会什么也画不出来。。
dd += a
if dd > 360:
dd -= 360