欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

python 使用turtule繪制遞歸圖形(螺旋、二叉樹、謝爾賓斯基三角形)

系統(tǒng) 2499 0

插圖工具使用Python內(nèi)置的turtle模塊,為什么叫這個turtle烏龜這個名字呢,可以這樣理解,創(chuàng)建一個烏龜,烏龜能前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn),烏龜?shù)奈舶统拢苿訒r就會畫一條線。并且為了增加烏龜畫圖的藝術(shù)價值,可以改變尾巴寬度和尾巴浸入墨水的顏色。

1.遞歸繪制螺旋

先用我們讓烏龜以line_len長度前進(jìn),然后向右旋轉(zhuǎn)90°,然后縮短line_len長度遞歸調(diào)用draw_spiral函數(shù)

            
import turtle
my_turtle = turtle.Turtle()
my_win = turtle.Screen()
def draw_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()
          

python 使用turtule繪制遞歸圖形(螺旋、二叉樹、謝爾賓斯基三角形)_第1張圖片

2.遞歸繪制二叉樹

首先繪制branch_length長度的主干枝條,然后向右旋轉(zhuǎn)20°,遞歸調(diào)用draw_tree繪制主干枝條上的右分支,之后再向左旋轉(zhuǎn)40°(因為需要抵消右旋轉(zhuǎn)的20°),遞歸調(diào)用draw_tree繪制主干枝條的左分支,然后再向右旋轉(zhuǎn)20°,原路返回。

            
import turtle
my_tree = turtle.Turtle()
my_win = turtle.Screen()
def draw_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()
          

python 使用turtule繪制遞歸圖形(螺旋、二叉樹、謝爾賓斯基三角形)_第2張圖片

3.繪制謝爾賓斯基三角形

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

            
import turtle
def draw_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()
def get_mid(p1, p2):
  return ((p1[0]+p2[0])/2, (p1[1]+p2[1])/2)
def sierpinski(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 使用turtule繪制遞歸圖形(螺旋、二叉樹、謝爾賓斯基三角形)_第3張圖片

總結(jié)

以上所述是小編給大家介紹的python 使用turtule繪制遞歸圖形(螺旋、二叉樹、謝爾賓斯基三角形),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 青娱分类视频精品免费2 | 精品亚洲一区二区三区 | 日韩黄色精品视频 | 国产精品一码二码三码在线 | 色蜜桃网| 香蕉久久一区二区不卡无毒影院 | 久久久久亚洲 | 欧美猛妇色xxxxxbbbb | 日日摸天天碰中文字幕 | 欧美黄色一级 | 欧美日韩在线视频不卡一区二区三区 | 亚洲国产日韩在线观频 | 久久久久久久久久亚洲 | 久久久人成影片免费观看 | 激情小说五月 | 亚洲 中文 欧美 日韩 在线 | 中文字幕日本电影 | 91视频最新网站 | 亚洲综合久久1区2区3区 | 在线欧美日韩 | 国产成人微拍精品 | 午夜男人天堂 | 精品久久一区二区三区 | 亚洲日日干 | 大看蕉a在线观看 | 唐人社电亚洲一区二区三区 | 在线播放av片 | 成人在线免费av | 91精选视频| 国产在线二区 | 日韩综合在线视频 | www亚洲一区 | 国产精品资源在线观看网站 | 国产精品久久99 | 久久久久久久久久综合情日本 | 久草最新在线 | 精品欧美一区手机在线观看 | 日韩中文字幕在线观看视频 | 国产成+人+亚洲+欧美+日韩 | 91久久国产综合久久 | 免费人成年短视频在线观看免费网站 |