Python中Turtle庫改變畫筆(海龜)方向的兩種方法總結(jié)
引言:
本文是學(xué)習(xí)Turtle庫時(shí),發(fā)現(xiàn)兩種方法都能改變畫筆的方向,但二者又不是完全相同,故對(duì)其加以辨析總結(jié)到此,在本文你將收獲:
1.兩種改變畫筆方向的方法
2.矩形的繪制,等邊三角形的繪制
3.兩種方法的辨析
使用left right改變畫筆方向
默認(rèn)畫筆的方向是向右,使用以下代碼就能發(fā)現(xiàn)
import turtle turtle.forward(100) turtle.mainloop()
要是我們想改變方向呢?
turtle.left(angle)
turtle.lt(angle)
turtle.right(angle)
turtle.rt(angle)在turtle庫中提供了簡寫的方法 幾乎每種方法都有更簡單的等效寫法
在上面的兩個(gè)方法中,傳入的參數(shù)是整數(shù)和浮點(diǎn)數(shù)
import turtle turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.mainloop()
更簡單的寫法
from turtle import *
for i in range(4):
fd(100)
lt(90)
mainloop()使用setheading改變畫筆方向
依舊使用官方文檔
turtle.setheading(to_angle)
turtle.seth(to_angle)to_angle是要到的那個(gè)角度,與angle一樣傳入整數(shù)或者浮點(diǎn)數(shù),使用seth或者setheading相當(dāng)于在坐標(biāo)系操作,角度是固定的
后面會(huì)詳細(xì)講解
如果我們把left改為Sethheading 結(jié)果會(huì)是怎樣的呢?
from turtle import *
for i in range(4):
fd(100)
seth(90)
mainloop()最終變成了這樣

就兩種結(jié)果的比較來看。Setheading繪制的矩形的時(shí)候,本應(yīng)該讓他轉(zhuǎn)彎的命令讓他停到了原地.
這是為什么呢?讓我們?cè)倩氐焦俜轿臋n:

在setheading修改方向時(shí),每一個(gè)角度是一個(gè)確切的方向,90度就是以畫筆位置為坐標(biāo)原點(diǎn)的北方,還記得傳入的參數(shù)名字是什么嗎?to_angle == 要到達(dá)的角度 在我們用sethading畫矩形的例子中,每一次循環(huán)都是將烏龜指向北方前進(jìn)100,所以才出現(xiàn)了意想不到結(jié)果。
二者的區(qū)別到底是什么呢?
如果一定要我舉一個(gè)生活中的例子,我想指南針(sethheading)和我們集合時(shí)的向左(left)向右(right)轉(zhuǎn)能在一定程度上說明他們的區(qū)別
向左向右轉(zhuǎn)參考的是我們本身的位置,指南針指向的是永遠(yuǎn)不變的南方
指南針的南方是根據(jù)磁場劃分的,setheading的南方是根據(jù)角度劃分的
向右轉(zhuǎn)是根據(jù)我們的右邊和左邊轉(zhuǎn)的,left/right是根據(jù)我們的畫筆(箭頭)的左右劃分的
如果你不喜歡這種不是很嚴(yán)謹(jǐn)?shù)念惐?,那讓我們從更為?yán)謹(jǐn)?shù)慕嵌热ヌ接懸幌逻@個(gè)問題
setheading是以畫筆位置為坐標(biāo)原點(diǎn),建立直角坐標(biāo)系
left是以畫筆位置為原點(diǎn)建立極坐標(biāo)系
三角實(shí)例
讓我們從實(shí)例出發(fā)了解一下這個(gè)問題:繪制一個(gè)三角形
畫一個(gè)三角形可以有很多種方法,如果我們想通過這個(gè)例子探討兩個(gè)改變方法的異同,我們需要做的是讓變量相對(duì)來說更少:
1.我們的起點(diǎn)要相同
2.我們繪制的流程要相同
3.我們使用的不同之處應(yīng)該只有改變方向時(shí)使用的方法
繪制流程:
1.從默認(rèn)原點(diǎn)前進(jìn)100
2.朝左方旋轉(zhuǎn)前進(jìn)100
3.朝左下旋轉(zhuǎn)前進(jìn)100
代碼如下:
from turtle import * //第一種方法 fd(100) left(120) fd(100) left(120) fd(100) //第二種方法 fd(100) setheading(120) fd(100) setheading(240) fd(100)
第一種方法在頂點(diǎn)位置時(shí)旋轉(zhuǎn)角度

第二種方法在頂點(diǎn)旋轉(zhuǎn)角度

總結(jié)
到此這篇關(guān)于Python中Turtle庫改變畫筆(海龜)方向的兩種方法的文章就介紹到這了,更多相關(guān)Python Turtle庫改畫筆方向內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Django開發(fā)中使用Ueditor上傳圖片遇到的坑及解決
在Django開發(fā)中使用Ueditor上傳圖片時(shí),可能會(huì)遇到后端配置不正確的問題,建議在實(shí)例化Ueditor后加上serverUrl,這可以在Chrome的F12工具中查看請(qǐng)求的后端配置項(xiàng),此外,如果需要修改上傳路徑,可以在配置文件中更改路徑,并調(diào)整view.py中的代碼來管理上傳文件2024-09-09
使用Python統(tǒng)計(jì)相同像素值個(gè)數(shù)
這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)統(tǒng)計(jì)相同像素值個(gè)數(shù),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-01-01
Python?OpenCV?Canny邊緣檢測算法的原理實(shí)現(xiàn)詳解
這篇文章主要介紹了Python?OpenCV?Canny邊緣檢測算法的原理實(shí)現(xiàn)詳解,由于邊緣檢測對(duì)噪聲敏感,因此對(duì)圖像應(yīng)用高斯平滑以幫助減少噪聲,具體詳情需要的小伙伴可以參考一下2022-07-07
利用python在Word文檔中創(chuàng)建和執(zhí)行條件郵件合并
郵件合并域和IF域是Word文檔中兩種非常實(shí)用的域,前者可以用來進(jìn)行郵件合并,根據(jù)數(shù)據(jù)批量創(chuàng)建定制的Word文檔,本文講介紹如何使用Python在Word文檔中創(chuàng)建條件郵件合并域以及執(zhí)行條件郵件合并,需要的朋友可以參考下2024-08-08

