科赫曲線,類似于同心圓那種,求大佬指教
uj5u.com熱心網友回復:
import turtle # 引入決解問題需要的工具——turtle作圖包
# 定義turtle畫筆和畫布的引數
def huabi():
turtle.speed(0) # speed()引數有[0,10]:“0”特殊、代表最快速度,其余[1,10]值越大、速度越快
turtle.pensize(2) # 設定畫筆寬度為2
turtle.setup(800,800, 100, 10) # setup()引數有4個:前兩個代表畫布的“寬”和“高”,當數值為整數時、表示絕對像素大小,當小數時、表示站螢屏的比例。后兩個可以省略,默認為螢屏中心位置,代表距離“螢屏左上角”的距離,單位是像素密度,
turtle.penup() # 抬起畫筆,之后的畫筆動作、就不會產生圖線
turtle.goto(-300, 100) # 以畫布中心點為坐標原點(0,0),將畫筆移動到坐標(-300,100)處
turtle.pendown() # 落下畫筆,以便畫圖
# 定義“尖”
def koch(size, n):
if n==0: # 0階的科赫雪花曲線就是一條線,大小為輸入的“size”
turtle.fd(size)
else: # 高階科赫雪花曲線
for i in [0, 60, -120, 60]: # turtle在“尖”的四條線上改變的角度,分別為0°,60°,-129°,60°
turtle.left(i) # 對應上邊四個角度,一共需要轉4次彎,畫出本階的四條線,
koch(size/3, n-1) # 每個角度下的一個邊,對應低一階的客戶雪花曲線的“尖”;至此完成函式本身的回圈和復用,自影片出一個完整的n階“尖”
# 定義“邊”
def sdkoch(size, n): # 完整的科赫雪花曲線由3個“邊”組成,我們以上完成的是一個由“尖”組成的“邊”,
koch(size, n)
turtle.right(120) # 2行代碼一組,
koch(size, n)
turtle.right(120)
koch(size, n) # 至此,得到完整的n階科赫雪花曲線
turtle.hideturtle() # 把turtle的游標隱藏
turtle.done() # 結束turtle
# 定義main()主函式
def main(size, n): # 設定引數介面
huabi()
sdkoch(size, n)
main(500, 2) # 在設定引數之后,呼叫主函 2是階數
網上找的
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/76633.html
