python螺旋圆的绘制_python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)...
插圖工具使用Python內(nèi)置的turtle模塊,為什么叫這個(gè)turtle烏龜這個(gè)名字呢,可以這樣理解,創(chuàng)建一個(gè)烏龜,烏龜能前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn),烏龜?shù)奈舶统?#xff0c;它移動(dòng)時(shí)就會(huì)畫一條線。并且為了增加烏龜畫圖的藝術(shù)價(jià)值,可以改變尾巴寬度和尾巴浸入墨水的顏色。
1.遞歸繪制螺旋
我們讓烏龜以line_len長(zhǎng)度前進(jìn),然后向右旋轉(zhuǎn)90°,然后縮短line_len長(zhǎng)度遞歸調(diào)用draw_spiral函數(shù)
importturtle
my_turtle=turtle.Turtle()
my_win=turtle.Screen()defdraw_spiral(tur, line_len):if line_len >0:
my_turtle.forward(line_len)
my_turtle.right(90)
draw_spiral(tur, line_len- 1)
draw_spiral(my_turtle,100)
my_win.exitonclick()
2.遞歸繪制二叉樹
首先繪制branch_length長(zhǎng)度的主干枝條,然后向右旋轉(zhuǎn)20°,遞歸調(diào)用draw_tree繪制主干枝條上的右分支,之后再向左旋轉(zhuǎn)40°(因?yàn)樾枰窒倚D(zhuǎn)的20°),遞歸調(diào)用draw_tree繪制主干枝條的左分支,然后再向右旋轉(zhuǎn)20°,原路返回。
importturtle
my_tree=turtle.Turtle()
my_win=turtle.Screen()defdraw_tree(branch_length, t):if branch_length > 5:
t.forward(branch_length)
t.right(20)
draw_tree(branch_length-20, t)
t.left(40)
draw_tree(branch_length-20, t)
t.right(20)
t.backward(branch_length)
my_tree.left(90)
my_tree.up()#抬起尾巴
my_tree.backward(200)
my_tree.down()#放下尾巴
my_tree.color('green')
draw_tree(100, my_tree)
my_win.exitonclick()
3.繪制謝爾賓斯基三角形
謝爾賓斯基三角形使用了三路遞歸算法,從一個(gè)大三角形開始,通過連接每一個(gè)邊的中點(diǎn),將大三角型分為四個(gè)三角形,然后忽略中間的三角形,依次對(duì)其余三個(gè)三角形執(zhí)行上述操作。
importturtledefdraw_triangle(points, color, my_angle):
my_angle.fillcolor(color)
my_angle.up()
my_angle.goto(points[0][0], points[0][1])
my_angle.down()
my_angle.begin_fill()
my_angle.goto(points[1][0], points[1][1])
my_angle.goto(points[2][0], points[2][1])
my_angle.goto(points[0][0], points[0][1])
my_angle.end_fill()defget_mid(p1, p2):return ((p1[0]+p2[0])/2, (p1[1]+p2[1])/2)defsierpinski(points, degree, my_angle):
colormap= ['blue', 'red', 'green', 'yellow','violet', 'orange', 'white']
draw_triangle(points, colormap[degree], my_angle)if degree >0:
sierpinski([points[0],
get_mid(points[0], points[1]),
get_mid(points[0], points[2])],
degree- 1, my_angle)
sierpinski([points[1],
get_mid(points[0], points[1]),
get_mid(points[1], points[2])],
degree- 1, my_angle)
sierpinski([points[2],
get_mid(points[2], points[1]),
get_mid(points[0], points[2])],
degree- 1, my_angle)
my_turtle=turtle.Turtle()
my_win=turtle.Screen()
my_points= [[-100, -50], [0, 100], [100, -50]]
sierpinski(my_points,3, my_turtle)
my_win.exitonclick()
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的python螺旋圆的绘制_python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql建表语句增加注释_MySQL建
- 下一篇: mongodb 搜索速度_MongoDB