日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python螺旋圆的绘制_python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)...

發布時間:2024/7/23 python 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python螺旋圆的绘制_python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

插圖工具使用Python內置的turtle模塊,為什么叫這個turtle烏龜這個名字呢,可以這樣理解,創建一個烏龜,烏龜能前進、后退、左轉、右轉,烏龜的尾巴朝下,它移動時就會畫一條線。并且為了增加烏龜畫圖的藝術價值,可以改變尾巴寬度和尾巴浸入墨水的顏色。

1.遞歸繪制螺旋

我們讓烏龜以line_len長度前進,然后向右旋轉90°,然后縮短line_len長度遞歸調用draw_spiral函數

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長度的主干枝條,然后向右旋轉20°,遞歸調用draw_tree繪制主干枝條上的右分支,之后再向左旋轉40°(因為需要抵消右旋轉的20°),遞歸調用draw_tree繪制主干枝條的左分支,然后再向右旋轉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.繪制謝爾賓斯基三角形

謝爾賓斯基三角形使用了三路遞歸算法,從一個大三角形開始,通過連接每一個邊的中點,將大三角型分為四個三角形,然后忽略中間的三角形,依次對其余三個三角形執行上述操作。

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()

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的python螺旋圆的绘制_python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。