python入門(四) 分形實現科赫曲線的雪花

2021-09-10 09:35:25 字數 984 閱讀 6116

效果如下,核心是遞迴思想

其實**很短,關鍵是理解koch函式的else部分出現的遞迴

要看懂**,你還需要理解turtle庫的函式,如果不理解,可以參考這篇文章

# 雪花

import turtle as a

def koch(size, n):

# 只有當階數是0時,往走一段

if (n == 0):

a.fd(size)

else:

# 將一條線分成四段,這裡設定每段之間需要的轉向

for angle in [0, 60, -120, 60]:

a.right(angle)

# 轉向之後進入了下一階的段,遞迴,這裡一定到想清楚!

koch(size / 3, n - 1)

if __name__ == '__main__':

a.setup(650, 300, 200, 200)

# 將畫筆左移一點

a.penup()

a.goto(-100, 0)

a.pendown()

# 設定畫雪花的階數,階數越多,雪花細節越豐富,但畫得也越慢

level = 2

size = 100

a.hideturtle() # 隱藏畫筆

# 每次畫雪花的1/3,左轉120

for i in range(3):

koch(size, level)

a.left(120)

a.done()

調整每條線的偏轉角度和總的偏轉角度,可以獲得不同的圖形,是不是很有趣!

演算法競賽入門經典 四分樹

include includeconst int len 32 const int maxn 1024 10 char s maxn int buf len len cnt 把字串s p 匯出到 以 r,c 為左上角,邊長為w的快取區里 r,c預設為0,0 w預設為32 void draw cons...

Mycat快速入門 四 分片規則

在資料切分處理中,特別是水平切分中,中介軟體最終要的兩個處理過程就是資料的切分 資料的聚合。選擇 合適的切分規則,至關重要,因為它決定了後續資料聚合的難易程度,甚至可以避免跨庫的資料聚合處理。可以通過全域性表,er分片表,資料冗餘來盡量來避免跨庫多表連線join。所謂全域性表就是該錶在每個分片上都會...

GIt入門學習 四 分支操作

檢視分支 git branch 新建分支 git branch 空格 分支名 切換分支 切換到已有分支 git checkout 空格 分支名若不存在該分支,切換並建立分支 git checkout b 空格 分支名 合併分支到主分支master 首先切換到主分支 git checkout mast...