今天这个文章就分享一些用python turtle画基础图形的代码,喜欢的朋友可以收藏关注保存。
首先是最基本的正多边形。
这里包含两个参数,n为边数,a为边长。参数都设置了默认值,直接调用函数就行,也可以根据需要自己传入参数。
import turtle
t = turtle.Turtle()
def f(n=3, l=100):
for _ in range(n):
t.forward(l)
t.left(360 / n)
f()
turtle.done()
然后是正星形,参数n为边数,a为星形尖角的角度,long为边长。关于星形的代码思路我们在之前的文章里有专题讲过,感兴趣的朋友可以看下之前的那个文章。
import turtle
t = turtle.Turtle()
def star(n=5, a=60, l=100):
b = (n * 2 - 2) * 180 / n - a
t.setheading(90)
t.left(b / 2)
for _ in range(n):
t.forward(l)
t.left(a - 180)
t.forward(l)
t.left(b + 180)
star()
turtle.done()
正心形, 参数l为边长。
import turtle
t = turtle.Turtle()
def hart(l=120):
t.left(45)
t.forward(l)
t.circle(l / 2, 180)
t.right(90)
t.circle(l / 2, 180)
t.forward(l)
hart()
turtle.done()
平行四边形,参数a,b为两条边的长度,o为一个夹角的角度
import turtle
t = turtle.Turtle()
def p(a=80, b=100, o=45):
for _ in range(2):
t.forward(a)
t.right(180 - o)
t.forward(b)
t.right(o)
p()
turtle.done()
椭圆,参数a,b为长轴和短轴的长度,y_1为y轴偏移值,用到了math.cos()和math.sin(),需要导入math模块。
import turtle
t = turtle.Turtle()
def ellipse(a=100, b=50,y_1=0):
for angle in range(360):
rad = angle * 3.14 / 180 # 将角度转换为弧度
x = a * math.cos(rad) - a
y = b * math.sin(rad)+y_1
t.goto(x, y)
ellipse()
turtle.done()
圆柱体,参数a为底部椭圆的半径,参数h为高度
import turtle
t = turtle.Turtle()
def yz(a=100,h=200):
ellipse(a, a / 6)
t.goto(0, h)
ellipse(a, a / 6, h)
t.penup()
t.goto(-a*2,h)
t.pendown()
t.goto(-a * 2, 0)
yz()
turtle.done()
圆锥体,参数a为底部椭圆的半径,参数h为高度
import turtle
t = turtle.Turtle()
def z(a=100,h=200):
ellipse(a,a/6)
t.goto(-a, h)
t.goto(-a*2, 0)
z()
turtle.done()
球体,参数r为半径,需要用到前面的画椭圆的函数
import turtle
t = turtle.Turtle()
def circle(r=100):
t.left(90)
t.circle(r)
t.right(90)
ellipse(r,25)
circle()
turtle.done()
立方体,参数long为边长,需要用到前面的正多边形和平行四边形函数
import turtle
t = turtle.Turtle()
def lft(long=100):
f(4,long)
t.left(90)
t.forward(100)
t.right(45)
p(long/2,long,45)
t.forward(long/2)
t.right(45)
p(long, long/2, 45)
t.forward(long)
t.right(90)
p(long, long / 2, 135)
t.forward(long)
t.right(45)
p(long/2, long, 135)
lft()
turtle.done()
还有哪些想画的基础图形也可以留言~