文章目录
-
- 5. 烏龜開始畫圖
-
- 5.1 以下細講起手步驟:
- 5.2 用 for 的方法令烏龜畫正四邊形
- 5.3 用 for 的方法令烏龜畫正五邊形
- 5.4 調整烏龜外型、大小與顏色 畫一個正四邊形
5. 烏龜開始畫圖
Ref:
A. 參考賴鵬仁老師講義: Python常用Turtle指令-例子講解.doc
B. Turtle的精采示範講義有碎形: SevenWaysToUseTurtle-PyCon2009.pdf
C. 官網 turtle module 手冊: Turtle graphics-Python 3.8 (舊版是24.1節).pdf
要進行烏龜繪圖, 需載入 turtle 模組,
而 turtle 是內建模組, 不須要另外安裝, 只需要在程式碼一開始寫入
import turtle
或是
from turtle import *
就可以開始執行 烏龜繪圖的所有動作
5.1 以下細講起手步驟:
- 必須先載入 turtle module,
>>>import turtle - 接著產生一個烏龜物件取名為 myTurtle
>>>myTurtle = turtle.Turtle()
會產生一個畫布, 有一個箭頭在原點處, 箭頭是烏龜預設的形狀 classic,
(註: 之後我們再改成烏龜的形狀, 下這個指令就可以改 myTurtle.shape(‘turtle’), 內建有6種形狀).
烏龜前進100單位
>>>myTurtle.forward(100)
烏龜左轉90度
>>>myTurtle.left(90)
烏龜再前進100單位
>>>myTurtle.forward(100)
如果要讓烏龜畫一個正方形, 就重複以上動作
>>> myTurtle.left(90)
>>> myTurtle.forward(100)
再做一次左轉及前進
>>> myTurtle.left(90)
>>> myTurtle.forward(100)
烏龜動作的基本指令
Move and draw 前進後退轉頭等:
forward() | fd() 前進
backward() | bk() | back() 後退
right() | rt() 右轉
left() | lt() 左轉
goto() | setpos() | setposition() 跳躍至
setx() 重設 x 座標
sety() 重設 y 座標
setheading() | seth() 重設前進方向
home() 回到預設狀態, 也就是 頭向右方, 位於原點
5.2 用 for 的方法令烏龜畫正四邊形
以上我們重複"前進再左轉", 做了4次, 完成一個正四邊形,
現在我們可以改用 for 的方法 畫一個正方形,
程式碼會較精簡, 也一目明瞭,
以上的重複性動作, 改成如下
( myTurtle.reset() 會把畫面清除, 烏龜回到一開始的狀態.)
1 2 3 4 | >>> myTurtle.reset() >>> for i in range(1,5): myTurtle.forward(100) myTurtle.left(90) |
5.3 用 for 的方法令烏龜畫正五邊形
如果我們想將上面的畫正四邊形的程式碼直接重複利用, 會發現第一個須修改的是轉彎的角度, 不再是90度, 此時我們需計算出下圖的角度, 那正是烏龜畫正五邊形時, 頭部前進方向轉動的角度,
Ex: 請同學求出下圖正五邊形右下方兩向量之間的夾角, 即正五邊形的外角
Sol:
我們先將正五邊形切割為3個三角形, 如下圖
發現3個三角形的內角和加總, 就是正五邊形的內角和, 故
正
五
邊
形
的
內
角
和
=
∑
n
=
1
3
三
角
形
的
內
角
和
=
∑
n
=
1
3
π
=
3
π
正五邊形的內角和 = \sum_{n=1}^{3} 三角形的內角和 = \sum_{n=1}^{3} \pi = 3 \pi
正五邊形的內角和=n=1∑3?三角形的內角和=n=1∑3?π=3π
則得到
正
五
邊
形
的
內
角
=
正
五
邊
形
的
內
角
和
5
=
3
π
5
正五邊形的內角 = \frac{正五邊形的內角和}{5} = \frac{ 3 \pi}{5}
正五邊形的內角=5正五邊形的內角和?=53π?
則我們得到下圖
由此可得 正五邊形的外角
正
五
邊
形
的
外
角
=
π
?
正
五
邊
形
的
內
角
=
π
?
3
π
5
=
2
π
5
正五邊形的外角 = \pi - 正五邊形的內角 = \pi- \frac{ 3 \pi}{5} = \frac{ 2 \pi}{5}
正五邊形的外角=π?正五邊形的內角=π?53π?=52π?
經過以上推導, 得知
正
五
邊
形
的
外
角
=
2
π
5
=
72
°
正五邊形的外角=\frac{2\pi}{5}=72 \degree
正五邊形的外角=52π?=72°
可以用 Python 簡單的計算 =
2
π
5
\frac{2\pi}{5}
52π? 換算成degree是多少,
在 Python 要取用
π
\pi
π值, 要先載入 math 模組, 下
import math
再下
math.pi
由
1
π
??
r
a
d
i
a
n
=
180
°
1 \pi\; radian=180 \degree
1πradian=180°
可得
1
??
r
a
d
i
a
n
=
180
π
??
°
=
57.29577951308232
1 \; radian=\frac{180}{\pi} \;\degree =57.29577951308232
1radian=π180?°=57.29577951308232
也就是 (一個 radian) 約等於 (52 degree)
故可以計算
2
π
5
\frac{2\pi}{5}
52π? radian 約等於
2
π
5
?
57
\frac{2\pi}{5}*57
52π??57
以下計算得到為
72
°
72 \degree
72°.
1 2 3 4 5 6 7 8 9 10 | >>> import math >>> oneRadian = 180/math.pi >>> oneRadian 57.29577951308232 >>> outerAngle = 2*math.pi/5 >>> outerAngle 1.2566370614359172 >>> outerAngle = 2*math.pi/5*oneRadian >>> outerAngle 72.0 |
經過以上的討論, 我們可以將前一節畫正四邊形的程式碼直接重複利用, 如下
1 2 3 4 5 | >>> import turtle >>> myTurtle=turtle.Turtle() >>> for i in range(1,6): myTurtle.forward(100) myTurtle.left(72) |
5.4 調整烏龜外型、大小與顏色 畫一個正四邊形
from turtle import *
T=Turtle()
S.shape(“turtle”) # 形狀設成烏龜
S.turtlesize(5) #烏龜大小
S.fillcolor(“blue”) # 烏龜身上內部的顏色
S.pencolor(“green”) # 畫筆顏色
S.pensize(4) #畫筆粗細
S.speed(50) # 烏龜移動速度
S.penup() # 提起畫筆
S.goto(0,-100) # 跳躍至此座標
S.pendown() # 放下畫筆
程式碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | from turtle import * S=Turtle() S.shape("turtle") # 形狀設成烏龜 S.turtlesize(5) #烏龜大小 S.fillcolor("blue") # 烏龜身上內部的顏色 S.pencolor("green") # 畫筆顏色 S.pensize(4) #畫筆粗細 S.speed(50) # 烏龜移動速度 S.penup() # 提起畫筆 S.goto(0,-100) # 跳躍至此座標 S.pendown() # 放下畫筆 for i in range(1,5): S.fd(100) S.lt(360/4) |
Ex: : 調整烏龜外型、大小與顏色 用 for 的方法 畫一個正五邊形
Ex: 調整烏龜外型、大小與顏色 用 for 的方法 畫一個正n邊形
Ex: 以上分別畫正方形, 正五邊形, 正 n 邊形 時, 烏龜每次需要轉多少度?