Python+Turtle實現(xiàn)繪制勾股樹
這次,我們用Turtle模塊結(jié)合三角函數(shù),繪制出這樣的勾股樹:



首先,導入模塊
from turtle import * from math import sin,cos,radians
定義勾股數(shù)每次旋轉(zhuǎn)的度數(shù)
angle1=70 angle2=90-angle1
定義tree函數(shù),繪制正方形并記錄要生成的新的正方形的坐標,計算出新的正方形的度數(shù)和邊長并繪制,這里采用遞歸的方式
ln表示邊長,mode表示當前正方形是在前一個正方形的左邊或右邊,h表示朝向,p表示坐標
def tree(ln,mode="left",h=90,p=(0,0)):
pu()
seth(h)
goto(p)
if ln>1:
pd()
for i in range(4):
if i==1 and mode=="left":
pos1=pos()
if i==2 and mode=="left":
pos2=pos()
if i==2 and mode=="right":
pos1=pos()
if i==3 and mode=="right":
pos2=pos()
fd(ln)
right(90)
h=heading()
tree(ln*cos(radians(angle1)),"left",h+angle1 if mode=="left" else h-angle1,pos1)
tree(ln*cos(radians(angle2)),"right",h+90-angle2 if mode=="left" else h-angle2,pos2)
在主程序中設(shè)置速度,因為遞歸很占內(nèi)存,所以繪制速度會卡頓減緩,所以這里加速1000倍,設(shè)置無延遲,筆觸顏色為綠色,筆觸大小2,抬筆,設(shè)置方向,并開始遞歸,最后隱藏畫布并保持窗口顯示
speed(0)
tracer(1000)
delay(0)
color("green")
pensize(2)
pu()
seth(90)
tree(70,p=(-100,-300))
ht()
done()
最終代碼:
from turtle import *
from math import sin,cos,radians
angle1=45 # 自行修改
angle2=90-angle1
def tree(ln,mode="left",h=90,p=(0,0)):
pu()
seth(h)
goto(p)
if ln>1:
pd()
for i in range(4):
if i==1 and mode=="left":
pos1=pos()
if i==2 and mode=="left":
pos2=pos()
if i==2 and mode=="right":
pos1=pos()
if i==3 and mode=="right":
pos2=pos()
fd(ln)
right(90)
h=heading()
tree(ln*cos(radians(angle1)),"left",h+angle1 if mode=="left" else h-angle1,pos1)
tree(ln*cos(radians(angle2)),"right",h+90-angle2 if mode=="left" else h-angle2,pos2)
speed(0)
tracer(1000)
delay(0)
color("green")
pensize(2)
pu()
seth(90)
tree(70,p=(-100,-300))
ht()
done()
到此這篇關(guān)于Python+Turtle實現(xiàn)繪制勾股樹的文章就介紹到這了,更多相關(guān)Python Turtle勾股樹內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Webots下載安裝?+?Pycharm聯(lián)調(diào)使用教程
Webots是一個開源的三維移動機器人模擬器,它最初是作為研究移動機器人中各種控制算法的研究工具開發(fā)的,自2018年12月起,Webots作為開源軟件發(fā)布,并獲得Apache 2.0許可證,這篇文章主要介紹了Webots下載安裝?+?Pycharm聯(lián)調(diào)?,需要的朋友可以參考下2023-02-02
關(guān)于numpy.concatenate()函數(shù)的使用及說明
這篇文章主要介紹了關(guān)于numpy.concatenate()函數(shù)的使用及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08
Python實現(xiàn)獲取系統(tǒng)臨時目錄及臨時文件的方法示例
這篇文章主要介紹了Python實現(xiàn)獲取系統(tǒng)臨時目錄及臨時文件的方法,結(jié)合實例形式分析了Python文件與目錄操作相關(guān)函數(shù)與使用技巧,需要的朋友可以參考下2019-06-06

