用python turtle画平铺图,代码分享。


今天我们来分享一段用python turtle画各种平铺图案的代码。 先来看下用圆形平铺的效果。


代码如下:

import turtle

t=turtle.Turtle()

turtle.tracer(2)

#参数draw为画要重复图形的函数,*a为draw的参数列表,x,y为间隔,

#is_cross是否要交叉,s_x,s_y是绘制的起始位置

def f(draw,*a,x=20,y=20,is_cross=0,s_x=-280,s_y=280):

for j in range(30):

for i in range(28):

t.penup()

t.goto(i*x+s_x+(is_cross*j%2)*x/2,s_y-j*y)

t.pendown()

draw(*a)

f(t.circle,20)


这里定义了一个高阶函数f,实现类似装饰器的功能,可以传入一个画基本图形的函数参数,然后对这个基本图形进行平铺操作。比如我们刚才就是把画一个圆的函数t.circle传了进来,要平铺的基本图形就是个圆形。f函数的第二个参数就是基本图形函数的参数,这个参数是可变参数,支持传入多个数值。我们刚才传入了数字20,也就是指圆的半径为20。可以在后面再加一个数字180,表示只画半圆。

f(t.circle,20,180)


F函数后面还有参数x,y,表示平铺时每个基本图形的间隔。比如我们把x,y数值改成圆的直径40,这样就正好能让圆不重叠。

f(t.circle,20,x=40,y=40)


参数is_cross表示是否要交叉平铺,传入1就可以交叉平铺了。这里只做了X轴的交叉,感兴趣的朋友可以加上Y轴的交叉。

f(t.circle,20,x=40,y=40,is_cross=1)


还可以多次平铺组合,比如再平铺个小一点的圆,并把绘制起点改一下。

f(t.circle,20,x=40,y=40)

f(t.circle,10,x=40,y=40,s_x=-280,s_y=290)


改一下平铺间隔,可以实现不同的效果。

f(t.circle,20,x=30,y=30)



也可以传入其他基本图形,实现不同图形的平铺。比如我们定义一个正多边形的函数d。默认参数时是画一个正三角形,可以传给f试下效果。

#画一个正n边形,参数n为边数,r为边长

def d(n=3,r=50):

for i in range(n):

t.forward(r)

t.left(360/n)

f(d)


传入不同的边数,比如传入4,就是正方形平铺。

f(d,4)


还可以加上边长参数。

f(d,4,45)


再定义一个函数S,画一个尖角。

把它传入f进行平铺。

def s(r=20):

t.left(45)

t.forward(r)

t.right(90)

t.forward(r)

t.left(45)

f(s)


多次平铺一个小一点的尖角看看效果。

f(s)

f(s,10)


今天的介绍就到这里了,喜欢的朋友可以多试下不同的参数值组合,或者传入其他的基本图形进行平铺,看下都能画出哪些好看的平铺图案哦。

相关文章

用Python让图表动起来,居然这么简单

我好像看到这个emoji:动起来了!编译:佑铭参考:https://towardsdatascience.com/how-to-create-animated-graphs-in-python-bb6...

如何用Python设计的界面生成简单的图表

我打算设计一个界面,可以直接生成一个简单的图表,不需要输入数据,点击直接生成,每次点击都发生变化,当你找到需要的图标样式,可以点击保存,还设置一个清除图表的功能,比如折线图、柱状图等。如下图用自带tk...

升职利器之Python漂亮图表生成

数据枯燥无味没人愿意看,生成图表简单直观。领导一看就懂,是不是很值得一试。下面给大家介绍一下pyecharts这个神器。pyecharts是百度Echarts的python封装,简单易用,漂亮直观。p...

python制作仪表盘图

今天教大家用pyecharts画仪表盘仪表盘 (Gauge) 是一种拟物化的图表,刻度表示度量,指针表示维度,指针角度表示数值。仪表盘图表就像汽车的速度表一样,有一个圆形的表盘及相应的刻度,有一个指针...

5分钟就能做一个Excel动态图表,你确定不学学?(纯gif教学)

本文说明 下图是一个比较酷炫的Excel动态图表,最难的部分就是用到了一个复选框控件。其实这个控件我很早就见过,但是不会用呀!望洋兴叹。这次呢,我也是借着这个文章为大家讲述一下这个控件的使用。本文没有...

如何用 Matplotlib 和 Seaborn 制作令人惊叹的数据可视化图表

数据可视化是将复杂的数据通过图表的形式展现出来,让人们能够更直观地理解数据中的模式、趋势和见解。一张好的图表,往往比密密麻麻的数字更能说明问题。在 Python 的世界里,Matplotlib 和 S...