首页 > 编程知识 正文

turtle画三角形代码(利用turtle库绘制六角形)

时间:2023-05-04 06:38:22 阅读:84531 作者:1915

1顺利的刺猬三角形

================

1.1顺利的小龙虾三角形(英语:Sierpinski triangle )是分形的,是波兰数学家顺利的小龙虾在1915年提出的。

1.2瓦弗朗西斯西斯顺利的小刺猬,1882年3月14日-1969年10月21日,波兰数学家。

2 python 3.8 -教程黑白版

==================

2.1效果图1

2.2代码1

# #代码来源:修改、添加、注释

# # https://什么是fishc.com.cn/forum.PHP? mod=视图顺序类型=2tid=151507

导入教程

# #定义平滑的刺猬三角形函数

defsierpinski (大小、时间、总角度) :

#times为0,是外周的大三角形

if times==0:

是turtle.FD (大小)

else:

foranglein [ 0,120,-120,- 120,120 ] :

总角度=角度

turtle.right (角度) )。

总角度=总角度0

if总角度==0:

Sierpinski (尺寸/2,times-1,总角度) )。

else:

turtle.FD (大小/2) )。

# #定义主函数

defmain(: )

# #窗口大小设定

turtle.setup (800,800 ) )。

# #举起笔

turtle.penup ()

去这个坐标

Turtle.goto(-300,-300 ) ) ) ) ) ) ) ) ) )。

# #落笔

turtle.pendown (

笔尖大小

Turtle.Pensize(2) ) ) )。

# #画一个角、外周三角形,先画60,后画120

角度in [ 60,-120]:

turtle.left (角度) )。

是turtle.FD (大小)

# #再角120

turtle.right(120 ) )。

总角度=0

Sierpinski (大小、时间、总角度) )。

# #隐藏刷子

turtle.hideturtle (

turtle.done (

size=600

# #层数、推荐5

#times=5

times=int (输入('阶数0-5 )。 推荐5:' ) )

# #主函数脱落

main(2.3效果图2

2.4代码2

''''

功能:画出平滑的刺猬三角形

环境: python3.7

日期: 2019/1/14 21:49

作者:指尖的魔法师

版本: 1.0

# # https://博客. csdn.net /复盖/体系结构/详细信息/86531715

''''

导入教程as t

差动运算(San ) :

''''

给三个点坐标,画三角形

''''

t .奔上() )。

t.goto(San[0] ) ) )。

t .奔腾() )。

t.goto(San[1] ) ) )。

t.goto(San[2] ) ) )。

t.goto(San[0] ) ) )。

defget_mid(a,b ) :

''''

返回两点的中间点坐标

''''

x=(a b0)/2

y=(A B )/2

返回

ef draw _ San (大小,I ) :

''''

绘制平滑刺猬的三角形函数

33660paramsize33603点坐标列表

:param i:递归次数

''''

绘制# # #三角形

存储区域网络

jiaoxing(size) if i > 0: # 绘制左边小三角形 size2 = [size[0], get_mid(size[0], size[1]), get_mid(size[0], size[2])] draw_san(size2, i - 1) # 绘制上边的小三角形 size3 = [get_mid(size[0], size[2]), get_mid(size[1], size[2]), size[2]] draw_san(size3, i - 1) # 绘制右边的小三角形 size4 = [get_mid(size[0], size[1]), size[1], get_mid(size[1], size[2])] draw_san(size4, i - 1) def main(): """ 主函数 """ # 打印图形标题 t.penup() t.left(90) t.forward(350) t.pendown() t.write("顺利的小刺猬三角形", False, align="center", font=("宋体", 20, "normal")) t.speed(5) # 初始三角形坐标 points = [[-200, 0], [200, 0], [0, 300]] # 递归5次 count = 5 # 调用绘制顺利的小刺猬三角形函数 draw_san(points, count) t.ht() #add t.exitonclick() if __name__ == '__main__': main()

3 python3.8-turtle彩色版

===================

3.1 字典法效果图3

3.2 代码3

#代码来源 #https://blog.csdn.net/qq_42907161/article/details/108228487?utm_medium=distribute.pc_relevant.none-task-blog-baidulandingword-6&spm=1001.2101.3001.4242 #字典法 import turtle t = turtle.Turtle() points = {'left':(-200, -100), 'top':(0, 200), 'right':(200, -100)} #画三角形和填充颜色函数 def drawTriangle(points, color): t.fillcolor(color) t.penup() t.goto(points['top']) t.pendown() t.begin_fill() t.goto(points['left']) t.goto(points['right']) t.goto(points['top']) t.end_fill() #取中点函数 def getMid(p1, p2): return ((p1[0] + p2[0]) / 2, (p1[1] + p2[1]) / 2) #画顺利的小刺猬三角形函数 def sierpinski(degree, points): colormap = ['blue', 'red', 'green', 'yellow', 'orange', 'gray'] if degree > 0: # 先画(挖掉)三角形 drawTriangle( {'left':getMid(points['left'], points['top']), 'right':getMid(points['right'], points['top']), 'top':getMid(points['right'], points['left']) },colormap[degree] ) # 再分别递归新生成的三个三角形 sierpinski(degree - 1, {'left':getMid(points['left'], points['top']), 'top':points['top'], 'right':getMid(points['top'], points['right'])}) sierpinski(degree - 1, {'left':points['left'], 'top':getMid(points['left'], points['top']), 'right':getMid(points['left'], points['right'])}) sierpinski(degree - 1, {'left':getMid(points['left'], points['right']), 'top':getMid(points['top'], points['right']), 'right':points['right']}) drawTriangle(points, 'white') #层数5个 sierpinski(5, points) t.ht() # 最后将海龟隐藏起来 turtle.done()

3.3 效果图4

3.4 代码4

# 顺利的小刺猬三角形 # By BigShuang # https://github.com/BigShuang/recursion-with-turtle import math import turtle # 颜色 LineColor="black" FillColors=[ '#CAE1FF', '#FFEFDB', '#8470FF', '#FF6347', '#FFDEAD', '#C1FFC1' ] # 最小绘制长度-三角形最小边长 Base=10 # 三角形边长 TriSize=250 # 绘制速度 MPS=10 # 初始化Turtle对象 t = turtle.Turtle() t.speed(MPS) t.hideturtle() # 递归函数-画下一级别的三角形-内部更小的 def draw_nextone(*triangle,**kwargs): # 如果三角形边长大于最小绘制长度,退出递归 if get_edge(triangle)<Base: return # 否则 # 1-根据三边中点绘制内部三角形 a, b, c = triangle[0:3] a_b, a_c, b_c=get3mid(a, b, c) # 绘制三角形并填色 depth=kwargs.get("depth",0) if len(triangle)==4: depth=triangle[3] # 取对应深度的颜色 _colorIdx=depth%len(FillColors) color = FillColors[_colorIdx] draw_tri(a_b, a_c, b_c, color=color) # 2-得到三个更小的三角形,对这三个更小的三角形再次调用本函数 draw_nextone(a,a_b,a_c,depth=depth+1) draw_nextone(b, a_b, b_c,depth=depth+1) draw_nextone(c, a_c, b_c,depth=depth+1) # 得到三角行三边边长 def get_edge(triangle): # triangle:[(),(),()]-三点坐标组成的列表 a,b,c=triangle[0:3] ax,ay=a bx,by=b ab2=(ax-bx)**2+(ay-by)**2 return math.sqrt(ab2) # 得到三边中点 def get3mid(*triangle): # triangle:[(),(),()]-三点坐标组成的列表 a, b, c = triangle ax, ay = a bx, by = b cx, cy=c # 得到三边中点的坐标 a_b=((ax+bx)/2,(ay+by)/2) a_c = ((ax + cx) / 2, (ay + cy) / 2) b_c = ((cx + bx) / 2, (cy + by) / 2) return a_b,a_c,b_c # 根据顶点坐标绘制三角形,可选颜色 def draw_tri(*args,**kwargs): # 三点坐标 a, b, c =args # 填充颜色 color=kwargs.get('color',None) t.penup() t.setpos(a) if color: t.color(LineColor,color) t.begin_fill() t.pendown() t.goto(b) t.goto(c) t.goto(a) t.penup() if color: t.end_fill() if __name__ == '__main__': _edge=TriSize*math.sqrt(3) tri=[(-TriSize,-TriSize),(TriSize,-TriSize),(0,_edge-TriSize)] a,b,c=tri draw_tri(a,b,c) draw_nextone(a,b,c) turtle.done()

4 一道中考题

==========

4.1 图:截图来自网络,仅供学习,如果侵权请联系,定删!

4.2 解题:

图1:0层===面积是1

图2: 1层===面积是3/4=1×3/4

图3:2层===面积是9/16=3/4×3/4

图4: 3层===面积是27/64=9/16×3/4

图5: 4层===面积是81/256=27/64×3/4

自己整理出来,仅供学习。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。