- Python極客項(xiàng)目編程(第2版)
- (美)馬赫什·文基塔查拉姆
- 253字
- 2024-07-24 11:09:23
1.7 完整代碼
下面是繪制科赫雪花的完整代碼:
""" koch.py 一個(gè)繪制科赫雪花的程序。 開(kāi)發(fā)者:Mahesh Venkitachalam """ import turtle import math #以遞歸的方式繪制科赫雪花 def drawKochSF(x1, y1, x2, y2, t): d = math.sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2)) r = d/3.0 h = r*math.sqrt(3)/2.0 p3 = ((x1 + 2*x2)/3.0, (y1 + 2*y2)/3.0) p1 = ((2*x1 + x2)/3.0, (2*y1 + y2)/3.0) c = (0.5*(x1+x2), 0.5*(y1+y2)) n = ((y1-y2)/d, (x2-x1)/d) p2 = (c[0]+h*n[0], c[1]+h*n[1]) if d > 10: # 第1個(gè)片段 drawKochSF(x1, y1, p1[0], p1[1], t) # 第2個(gè)片段 drawKochSF(p1[0], p1[1], p2[0], p2[1], t) # #第3個(gè)片段 drawKochSF(p2[0], p2[1], p3[0], p3[1], t) # 第4個(gè)片段 drawKochSF(p3[0], p3[1], x2, y2, t) else: # 繪制中間的角 t.up() t.setpos(p1[0], p1[1]) t.down() t.setpos(p2[0], p2[1]) t.setpos(p3[0], p3[1]) # 繪制兩側(cè)的邊 t.up() t.setpos(x1, y1) t.down() t.setpos(p1[0], p1[1]) t.up() t.setpos(p3[0], p3[1]) t.down() t.setpos(x2, y2) # 函數(shù)main() def main(): print('Drawing the Koch Snowflake...') t = turtle.Turtle() t.hideturtle() # 繪制科赫雪花 try: drawKochSF(-100, 0, 100, 0, t) drawKochSF(0, -173.2, -100, 0, t) drawKochSF(100, 0, 0, -173.2, t) except: print("Exception, exiting.") exit(0) # 等用戶在屏幕上單擊后退出 turtle.Screen().exitonclick() # 調(diào)用函數(shù)main() if __name__ == '__main__': main()
推薦閱讀
- 數(shù)據(jù)科學(xué)實(shí)戰(zhàn)手冊(cè)(R+Python)
- Python編程自學(xué)手冊(cè)
- R語(yǔ)言數(shù)據(jù)分析從入門(mén)到精通
- CentOS 7 Server Deployment Cookbook
- Mastering Entity Framework
- PyTorch Artificial Intelligence Fundamentals
- OpenCV for Secret Agents
- Unity Shader入門(mén)精要
- Oracle從入門(mén)到精通(第5版)
- RISC-V體系結(jié)構(gòu)編程與實(shí)踐(第2版)
- Scratch3.0趣味編程動(dòng)手玩:比賽訓(xùn)練營(yíng)
- Kivy Cookbook
- Akka入門(mén)與實(shí)踐
- Hack與HHVM權(quán)威指南
- 零基礎(chǔ)學(xué)編程系列(全5冊(cè))