日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Python中Turtle庫改變畫筆(海龜)方向的兩種方法總結_python

作者:BugShowMaker ? 更新時間: 2022-12-21 編程語言

引言:

本文是學習Turtle庫時,發現兩種方法都能改變畫筆的方向,但二者又不是完全相同,故對其加以辨析總結到此,在本文你將收獲:

1.兩種改變畫筆方向的方法

2.矩形的繪制,等邊三角形的繪制

3.兩種方法的辨析?

使用left right改變畫筆方向

默認畫筆的方向是向右,使用以下代碼就能發現

import turtle
turtle.forward(100)
turtle.mainloop()

要是我們想改變方向呢?

turtle.left(angle)

turtle.lt(angle)

turtle.right(angle)

turtle.rt(angle)

在turtle庫中提供了簡寫的方法 幾乎每種方法都有更簡單的等效寫法

在上面的兩個方法中,傳入的參數是整數和浮點數

單位默認為角度但可以通過degrees()?和?radians()?函數改變設置

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是要到的那個角度,與angle一樣傳入整數或者浮點數,使用seth或者setheading相當于在坐標系操作,角度是固定

? 后面會詳細講解

如果我們把left改為Sethheading 結果會是怎樣的呢?

from turtle import *
for i in range(4):
    fd(100)
    seth(90)
mainloop()

?最終變成了這樣?

就兩種結果的比較來看。Setheading繪制的矩形的時候,本應該讓他轉彎的命令讓他停到了原地.

這是為什么呢?讓我們再回到官方文檔:

在setheading修改方向時,每一個角度是一個確切的方向,90度就是以畫筆位置為坐標原點的北方,還記得傳入的參數名字是什么嗎?to_angle == 要到達的角度? 在我們用sethading畫矩形的例子中,每一次循環都是將烏龜指向北方前進100,所以才出現了意想不到結果。

?二者的區別到底是什么呢?

如果一定要我舉一個生活中的例子,我想指南針(sethheading)和我們集合時的向左(left)向右(right)轉能在一定程度上說明他們的區別

向左向右轉參考的是我們本身的位置,指南針指向的是永遠不變的南方

指南針的南方是根據磁場劃分的,setheading的南方是根據角度劃分的

向右轉是根據我們的右邊和左邊轉的,left/right是根據我們的畫筆(箭頭)的左右劃分的

?如果你不喜歡這種不是很嚴謹的類比,那讓我們從更為嚴謹的角度去探討一下這個問題

????????setheading是以畫筆位置為坐標原點,建立直角坐標系

????????left是以畫筆位置為原點建立極坐標系

三角實例

讓我們從實例出發了解一下這個問題:繪制一個三角形

畫一個三角形可以有很多種方法,如果我們想通過這個例子探討兩個改變方法的異同,我們需要做的是讓變量相對來說更少:

1.我們的起點要相同

2.我們繪制的流程要相同

3.我們使用的不同之處應該只有改變方向時使用的方法

繪制流程:

1.從默認原點前進100

2.朝左方旋轉前進100

3.朝左下旋轉前進100

代碼如下:

from turtle import *
//第一種方法
fd(100)
left(120)
fd(100)
left(120)
fd(100)
//第二種方法
fd(100)
setheading(120)
fd(100)
setheading(240)
fd(100)

?第一種方法在頂點位置時旋轉角度

第二種方法在頂點旋轉角度

總結?

原文鏈接:https://blog.csdn.net/m0_62947851/article/details/122741408

欄目分類
最近更新