網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
引言:
本文是學(xué)習(xí)Turtle庫(kù)時(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庫(kù)中提供了簡(jiǎn)寫的方法 幾乎每種方法都有更簡(jiǎn)單的等效寫法
在上面的兩個(gè)方法中,傳入的參數(shù)是整數(shù)和浮點(diǎn)數(shù)
單位默認(rèn)為角度但可以通過(guò)degrees()?和?radians()?函數(shù)改變?cè)O(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()
?更簡(jiǎn)單的寫法
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é)果的比較來(lái)看。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)能在一定程度上說(shuō)明他們的區(qū)別
向左向右轉(zhuǎn)參考的是我們本身的位置,指南針指向的是永遠(yuǎn)不變的南方
指南針的南方是根據(jù)磁場(chǎng)劃分的,setheading的南方是根據(jù)角度劃分的
向右轉(zhuǎn)是根據(jù)我們的右邊和左邊轉(zhuǎn)的,left/right是根據(jù)我們的畫筆(箭頭)的左右劃分的
?如果你不喜歡這種不是很嚴(yán)謹(jǐn)?shù)念惐龋亲屛覀儚母鼮閲?yán)謹(jǐn)?shù)慕嵌热ヌ接懸幌逻@個(gè)問(wèn)題
????????setheading是以畫筆位置為坐標(biāo)原點(diǎn),建立直角坐標(biāo)系
????????left是以畫筆位置為原點(diǎn)建立極坐標(biāo)系
三角實(shí)例
讓我們從實(shí)例出發(fā)了解一下這個(gè)問(wèn)題:繪制一個(gè)三角形
畫一個(gè)三角形可以有很多種方法,如果我們想通過(guò)這個(gè)例子探討兩個(gè)改變方法的異同,我們需要做的是讓變量相對(duì)來(lái)說(shuō)更少:
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é)?
原文鏈接:https://blog.csdn.net/m0_62947851/article/details/122741408
相關(guān)推薦
- 2023-01-14 Python?pandas中to_sql的使用及問(wèn)題詳解_python
- 2022-10-11 關(guān)于401狀態(tài)碼的含義和處理方式_相關(guān)技巧
- 2022-06-12 如何在React項(xiàng)目中使用AntDesign_React
- 2022-12-08 Flask框架運(yùn)用Ajax實(shí)現(xiàn)輪詢動(dòng)態(tài)繪圖_python
- 2022-12-22 數(shù)據(jù)清洗之如何用一行Python代碼去掉文本中的各種符號(hào)_python
- 2023-10-11 hutool工具類 | huTool的基本使用
- 2022-10-21 Golang驗(yàn)證器之validator是使用詳解_Golang
- 2024-04-02 Centos無(wú)法獲取IP報(bào)No suitable device found for this con
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支