Python+Turtle實現(xiàn)繪制勾股樹
這次,我們用Turtle模塊結(jié)合三角函數(shù),繪制出這樣的勾股樹:
首先,導(dǎo)入模塊
from turtle import * from math import sin,cos,radians
定義勾股數(shù)每次旋轉(zhuǎn)的度數(shù)
angle1=70 angle2=90-angle1
定義tree函數(shù),繪制正方形并記錄要生成的新的正方形的坐標(biāo),計算出新的正方形的度數(shù)和邊長并繪制,這里采用遞歸的方式
ln表示邊長,mode表示當(dāng)前正方形是在前一個正方形的左邊或右邊,h表示朝向,p表示坐標(biāo)
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)文章
Python遍歷目錄下文件、讀取、千萬條數(shù)據(jù)合并詳情
這篇文章主要介紹了Python遍歷目錄下文件、讀取、千萬條數(shù)據(jù)合并詳情,對文件夾和文件進行屬性判斷,首先對文件夾進行遍歷,看文件夾里有什么樣的文件,讀取出文件夾中的所有文件,下面文章將詳細介紹該內(nèi)容,需要的小伙伴可以參考一下2022-01-01matplotlib設(shè)置顏色、標(biāo)記、線條,讓你的圖像更加豐富(推薦)
這篇文章主要介紹了matplotlib設(shè)置顏色、標(biāo)記、線條,讓你的圖像更加豐富,本文通過實例圖文相結(jié)合給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09