python中使用遞歸實現koch曲線繪製

python 中使用遞歸繪製koch曲線

      koch曲線是由瑞典數學家Helge von Koch,在1904年發表的「從初等幾何構造的一條沒有切線的連續曲線」的論文中提出的。它的描述以下: python

      一、指定一條線段的長度(L); 算法

      二、將這條線段三等分,並以中間的線段爲底邊構造一個等邊三角形,而後去掉底邊;(此時曲線的長度爲4/3L); spa

      三、對2中生成的曲線的每一條邊重複2的操做(每操做一次稱爲一次迭代)。 設計

      因此koch曲線能夠在有限的空間裏達到無線長,這是它的特色。因爲它的外形像雪花,因此又稱「雪花曲線」。 遞歸

那麼在計算機中用python語言如何繪製呢?先分析下算法:(n 迭代次數 ; L 直線長度) get

      一、若是n=0,直接畫出L長的直線便可; 數學

      二、若是n=1(第一次迭代),畫出長度爲L/3的線段;畫筆向左轉60度再畫長度爲L/3長的線段;畫筆向右轉120度畫長度爲L/3長的線段;畫筆再向左轉60度畫出長度爲L/3的線段;(基礎圖形) import

      三、若是n>1,第n次迭代至關於:n-1次迭代;畫筆左轉60度;n-1次迭代;畫筆右轉120度;n-1次迭代;畫筆左轉60度;n-1次迭代。(共7步操做) 基礎

      根據上面的算法,就能夠設計python裏的程序去實現,代碼以下: 程序

import turtle

tr = turtle.getturtle()

def koch(n,len):
    if(n==0):
        tr.forward(len)
    elif(n==1):
     tr.forward(len/3.0)
     tr.left(60)
     tr.forward(len/3.0)
     tr.right(120)
     tr.forward(len/3.0)
     tr.left(60)
     tr.forward(len/3.0)
    else:
        koch(n-1,len/3.0)
        tr.left(60)
        koch(n-1,len/3.0)
        tr.right(120)
        koch(n-1,len/3.0)
        tr.left(60)
        koch(n-1,len/3.0)

koch(4,300)    #迭代次數,直線長度

相關文章
相關標籤/搜索