還記得我們怎樣學習開車的?
想一想,就像把大象裝冰箱需要幾步?這樣來回答問題。
第一步:學習開車基本操作——前進、後退、剎車、打開左轉向燈等;
第二步:認識地圖、路標(紅綠燈等)——在什麼路況、什麼情況下做相應的操作;
第三步:通過大量實踐練習——摸索開車技巧、規律等。
在Python中使用海龜庫(turtle)繪製平面圖形,就類似於駕馭「小海龜」汽車,遨遊在Python世界的畫布上,同樣也需要三步操作。
首先,需要掌握基本的繪圖命令和流程控制語句。比如:前進(forward)、後退(backward)、左轉(left)、右轉(right)等常用的操作命令以及條件、循環等控制結構。
其次,能夠認識地圖,根據地圖的東南西北(上下左右),來確定畫筆的行駛路線。比如:怎麼轉彎?什麼時候轉?前行或後退多少步等。這裡的地圖就是數學裡面的二維平面坐標系,以它為基礎參照進行路線規劃(分析)。
第三,在參考坐標系的基礎上,通過一定量的訓練,從而掌握繪圖的一般規律和技巧。
本文通過一個圖形的不同擺放,來分析梳理繪製平面圖形的基本思路和流程。
01二維平面坐標系
由水平和豎直兩條直線組成的平面,相交的中心點為坐標原點(0,0),平面上的任何一個點的位置都是由x軸(橫坐標)和y軸(縱坐標)上的兩個數字確定。
小海龜默認起始點在坐標原點(0,0),方向向右(0°方向)。大家要對坐標系的四個象限以及小海龜方向的指向非常熟悉。
02繪圖基礎代碼
編程中,養成良好的書寫習慣,能夠最大限度地減少代碼報錯的可能。
Python是區分大小寫的,在創建畫筆時的Pen()函數的首字母P必須大寫。所有點號和圓括號必須在英文輸入法下書寫。還有Pen()和done()以及其他的函數,單詞後面必須有一對圓括號。從專業術語來講,這些都是函數的調用部分,是語法要求必須要這樣書寫的。
切記切記!
在繪製任何一個平面圖形之前,先完成三行基礎代碼的編寫。
第一步:導入海龜庫;import turtle第二步:創建一支自己的畫筆;t=turtle.Pen()第三步:添加停止動畫效果,讓屏幕暫停; turtle.done()
然後,根據繪圖要求,在「創建」和「停止」的中間位置補充繪製需要的其他代碼即可。
03案例分享
以繪製「菱形」為例,菱形的擺放可以有如下不同的方式,假定:邊長150,內夾角為:60°、120°。
分析過程:
圖一:如果以左下角的點作為坐標原點(0,0)為繪製起點。
則可以先前行一定距離(繪製第一條邊),然後左轉彎菱形的補角(180-120=60°);繼續前行150(繪製第二條邊);再左轉120°(學會找角度規律),前行(繪製第三條邊);再左轉60°,前行(繪製第四條邊)。參考代碼如下:
答案不唯一,大家還可以思考其他的方式繪製。比如:先向左轉60°,繪製上面的直線也是可以的。
圖二:如果以最下方的點作為坐標原點(0,0)為繪製起點。應該怎麼設計路線呢?
設計路線:先左轉60°,前行;再左轉60°,前行;再左轉120°,前行,最後左轉60°,前行即可繪製完畢。參考代碼如下:
圖三:如果以最左側的點作為坐標原點(0,0)為繪製起點。它的偏移角度又該如何考慮?
設計路線:向左轉30°,前行;再右轉60°,前行;再右轉120°,前行;最後右轉60°,前行即可繪製完畢。參考代碼如下:
04小結
無論菱形怎麼擺放,以平面坐標係為參照,先確定一個起始點,分析計算圖形的運行軌跡和每次偏移角度,然後再開始繪製圖形。
其他圖形的繪製也是如此設計即可。案例雖小,但需要仔細思考,掌握其繪製的核心要領。
下一節,會分享圖形繪製的一些技巧和規律。敬請關注!