用turtle绘制各种曲线
一、爱心
首先,导入需要的turtle海龟和math数学库
import turtle as tt
from math import *
设置画笔参数
tt.speed(0)
tt.pensize(4)
tt.pencolor("red")
tt.pu()
计算爱心桃下一个点的坐标公式:
在代码中添加函数
def args(a,t):
x=a*(15*(sin(t)**3))
y=a*(15*cos(t)-5*cos(2*t)-2*cos(3*t)-cos(4*t))
return x,y
循环
while t<=360:
tt.goto(args(a,t))
tt.pd()
t+=1
最后让turtle窗口保持显示
tt.done()
最终代码
import turtle as tt
from math import *
def args(a,t):
x=a*(15*(sin(t)**3))
y=a*(15*cos(t)-5*cos(2*t)-2*cos(3*t)-cos(4*t))
return x,y
tt.speed(0)
tt.pensize(4)
tt.pencolor("red")
tt.pu()
a,t=8,0
while t<=360:
tt.goto(args(a,t))
tt.pd()
t+=1
tt.done()
二、雪花
导入所需要的模块
import turtle as t
import random
定义函数
def snow(leng):
if leng>2:
t.pd()
for i in range(6):
snow(leng/3)
t.forward(leng)
t.left(60)
t.forward(leng)
t.right(120)
t.pencolor(random.choice(["red","green","purple","blue","yellow"]))
t.pu()
设置画笔参数
t.delay(0)
t.speed(0)
t.tracer(20)
t.pensize(4)
t.pencolor("blue")
执行画雪花的函数
snow(100)
让屏幕保持显示
t.done()
最终代码
import turtle as t
import random
def snow(leng):
if leng>2:
t.pd()
for i in range(6):
snow(leng/3)
t.forward(leng)
t.left(60)
t.forward(leng)
t.right(120)
t.pencolor(random.choice(["red","green","purple","blue","yellow"]))
t.pu()
t.delay(0)
t.speed(0)
t.tracer(20)
t.pensize(4)
t.pencolor("blue")
snow(100)
t.done()
三、太阳花
导入需要的模块
import turtle as t
设置画笔属性
t.speed(0)
t.pencolor("red")
t.fillcolor("yellow")
t.pensize(2)
设置变量
n=40
degree=360/n
leng=300
绘制太阳花
t.begin_fill()
for i in range(n):
t.forward(leng)
t.left(180-degree)
t.end_fill()
窗口保持显示
t.done()
最终代码
import turtle as t
t.speed(0)
t.pencolor("red")
t.fillcolor("yellow")
t.pensize(2)
n=40
degree=360/n
leng=300
t.begin_fill()
for i in range(n):
t.forward(leng)
t.left(180-degree)
t.end_fill()
t.done()
注:n表示太阳花角的数量的多和少(需要被360整除),leng表示太阳花的直径,这两个变量的值可以自己修改
当n=60
当n=20
四、有规律的图形
1
效果:
代码 :
import turtle as t
n=30 # 个数
degree=360/n
leng=100 # 边长
t.speed(0) # 速度
t.pencolor("blue") # 颜色
for i in range(n):
for j in range(4):
t.forward(leng)
t.right(90)
t.right(degree)
t.done()
2
效果:
代码:
import turtle as t
import random
de=10 # 每根树枝的倾斜角度
def tree(x,y,degree,length,n):
if n<=5:
t.pencolor("green")
else:
t.pencolor("brown")
t.pu()
t.goto(x,y)
t.setheading(degree)
t.pd()
t.forward(length)
if n==1:
return
else:
pos=t.pos()
tree(pos[0],pos[1],degree+de+random.randint(-5,5),length+random.randint(-5,5),n-1 if random.randint(1,100)<=90 else n)
tree(pos[0],pos[1],degree-de+random.randint(-5,5),length+random.randint(-5,5),n-1 if random.randint(1,100)<=90 else n)
t.speed(0)
t.delay(0)
t.tracer(400)
tree(0,-300,90,30,10)
t.done()
制作不易,喜欢的话点赞关注哦!