- 給孩子的計(jì)算思維書:圖形化編程及數(shù)學(xué)素養(yǎng)課(基礎(chǔ)篇)
- 昍爸
- 873字
- 2023-06-29 17:06:34
2.3 方向與旋轉(zhuǎn)
不知道大家有沒有一點(diǎn)疑惑:為什么上面的移動(dòng)20步就是向右移動(dòng),而不是向左、向上或向下移動(dòng)呢?或者更復(fù)雜一點(diǎn),為什么不是向左上角、右上角等方向移動(dòng)呢?
我之前講過,計(jì)算機(jī)自己不會主動(dòng)思考,我們告訴計(jì)算機(jī)做什么它才會做什么。計(jì)算機(jī)里的小貓一定是因?yàn)槲覀兏嬖V它向右走它才向右走的。可是,我們的程序里并沒有哪條命令告訴它向哪個(gè)方向移動(dòng)啊,這是怎么回事呢?
這個(gè)問題的答案涉及運(yùn)動(dòng)的方向。與人在現(xiàn)實(shí)生活中的運(yùn)動(dòng)一樣,每個(gè)角色也有一個(gè)面向的方向,角色移動(dòng)的時(shí)候就是沿著所面向的方向移動(dòng)的。那么,怎么表示面向的方向呢?現(xiàn)實(shí)生活中可以用東、南、西、北、東南、東北、西南、西北來表示大概的方向。但如果要表示更精確的方向,就要使用角度的概念。Scratch就是使用角度來表示方向的。
在Scratch里,將朝上定義為面向0°。在此基礎(chǔ)上,角色可以繞著中心點(diǎn)順時(shí)針或逆時(shí)針旋轉(zhuǎn)。順時(shí)針旋轉(zhuǎn)時(shí),用正數(shù)表示旋轉(zhuǎn)的角度,旋轉(zhuǎn)90°、180°和270°后所面向的方向分別如下圖所示。當(dāng)然,也可以逆時(shí)針旋轉(zhuǎn)。逆時(shí)針旋轉(zhuǎn)時(shí),用負(fù)數(shù)表示逆時(shí)針旋轉(zhuǎn)的度數(shù)。比如逆時(shí)針旋轉(zhuǎn)90°,即旋轉(zhuǎn)-90°,等價(jià)于順時(shí)針旋轉(zhuǎn)270°。

我們知道,周角是360°,如果旋轉(zhuǎn)的度數(shù)超過了360°,那可以通過除以360°取余數(shù)得到旋轉(zhuǎn)的角度。比如,角色初始時(shí)面向0°方向,順時(shí)針旋轉(zhuǎn)450°后面向什么方向呢?由于450÷360=1…90,因此,角色最后面向90°方向。
那如果角色一開始不是面向0°方向,那又會怎樣呢?
小練習(xí)
(1)假設(shè)角色一開始面向70°方向,經(jīng)過兩次順時(shí)針旋轉(zhuǎn)200°,最終面向什么方向?
解:
70+200×2=470
470÷360=1…110
因此,最后面向110°方向。
(2)假設(shè)角色一開始面向70°方向,經(jīng)過兩次逆時(shí)針旋轉(zhuǎn)250°,最終面向什么方向?
解:
70-250×2=-430
-430÷360=-2…290(注意:余數(shù)一定要大于等于0)
因此,最后面向290°方向,或者是-70°方向。
或者可以這么思考,逆時(shí)針旋轉(zhuǎn)250°等價(jià)于順時(shí)針旋轉(zhuǎn)360°-250°=110°。70+110×2=290,因此,最后面向290°方向。
現(xiàn)在,我們可以來回答為什么小貓是向右移動(dòng)的問題了。這是因?yàn)椋谀J(rèn)的設(shè)置下,小貓所面向的方向是90°(見下圖),即右方。如果我們要改變小貓運(yùn)動(dòng)的方向,只要改變它面向的方向就行了。
