Scratch & Math: 天花板上的蜘蛛(二)

Peter Wei
8 min readApr 17, 2017

--

除了卡氏座標系外,軸座標系是另一種常用的二維座標系統。在軸座標系上,利用到相對圓點的距離和角度可以描述平面上的任一點位置,這種特性很適合應用在導航系統。Scratch實做練習裡,我們要將上一篇小蜘蛛結網的程式以軸座標系重新改寫。

數學關鍵字: 軸座標系、三角函數、多維座標系。

數學家: 閔考斯基。

Scratch程式:https://scratch.mit.edu/projects/122330795/

另一種二維座標系統:軸座標系

二維空間是一個平面。卡氏座標系利用互相垂直的x-y軸座標表示平面上的任一點,標示出座標點位置(x, y)。

卡氏座標系並不是唯一一種描述二維空間座標的方法,極座標系(polar coordinate system)便是另一種常見描述二維空間的座標系。

極座標系裡有一個圓點O和一條畫有刻度的參考軸線L。下圖中綠色線段的紅點對應到軸線L的刻度3,同時以軸線L為參考,夾角角度為60°,因此座標就標示成(3, 60°)。同理,,藍色線段的紅點座標為(4, 210°)。

(取自維基百科Polar_coordinate_system CC BY-SA 3.0

軸座標系以距離和夾角描述二維空間的點,這種特性很適合應用在數學、工程、航海、航空和機器人領域。舉例來說,如果想要控制一隻機器手臂,可以利用軸座標系輕易地描述、設定機器手臂的旋轉夾角和伸展長度。

瞭解了卡氏座標系和軸座標系的定義,我們考慮二維平面的任意點P:

  1. 點P可以表示為卡式座標(x, y)。
  2. 如果以x軸為參考軸線,點P的位置也可以用軸座標系統表示成(r, θ)。

卡式直角座標(x, y)和軸座標(r, θ)表示的是同一個點P,理論上卡式直角座標和軸座標間應該存在一種方法可以互相轉換。

(取自維基百科三角函數 創用CC 姓名標示-相同方式分享 3.0

如果要將軸座標系的表示方法轉換為卡式直角座標,就要透過三角函數來表示。我們先來看看三角函數正弦(sin)和餘弦(cos)的定義。

1. 對應夾角 θ,正弦函數的定義是角 θ的對邊y除以斜邊r,寫成,

2. 對應夾角 θ,餘弦函數的定義是角 θ的鄰邊x除以斜邊r,寫成,

因此點P的軸座標是(r, θ),就可以利用正弦和餘弦函數轉換成卡式直角座標的(x, y),

舉例來說,如果點P的極座標是(1, 60度)。用計算機算出sin60度= 0.866,cos60度= 0.5,因此可以換算出點P的卡式直角座標,

x = 1 * 0.866 = 0.866

y = 1 * 0.5 = 0.5

點P的卡式直角座標為(0.866, 0.5)。

動手做1–2 用軸座標實做小蜘蛛結網

[程式設計需求規格]

在上一篇文章裡的動手做1–1程式,利用二維卡式直角座標來移動角色蜘蛛。在動手做1–2裡,我們將利用軸座標系來做一個一模一樣的蜘蛛結網程式。

[程式設計角色和舞台]

動手做1–1一樣,有蜘蛛和蝴蝶兩個角色,另外有手繪的樹木背景舞台。在這裡我們新增了兩個角色:「中心點」是一個小黑點,「滑鼠位置」是一個小白點,目的是顯示滑鼠的軸座標。

點選表格可放大

[程式設計解決方案]

動手做1–1裡的小蜘蛛移動路徑是參考Scratch舞台右下方的卡氏座標來設定。由於Scratch並沒有支援軸座標系,我們要建立兩個變數「軸座標 — 角度」和「軸座標 — 距離」並設計相關計算,然後將這兩個變數顯示在舞台上當做小蜘蛛移動的參考。

點選表格可放大

[程式檢視]

由於Scratch裡並沒有軸座標的指令積木,而且角色移動都是依照卡氏直角座標(x, y)的設定。程式[蜘蛛1–2.2]的客製積木就負責了最關鍵的座標轉換計算。

程式[蜘蛛1–2.2]

程式[蜘蛛1–2.3]到[蜘蛛1–2.7]使用客製積木做軸座標的轉換,但是我們面臨了一個問題,要如何才能知道舞台上任一點的軸座標(r, θ)呢?

解決方法可以是設計一個新角色放置在舞台原點,然後不斷偵測滑鼠游標的軸座標,然後顯示在舞台上。這就是程式[中心點1–2.1]和[中心點1–2.2]的目的。

Scratch裡有預設的角色方向,每一個方向也有定義相對應的旋轉角度值。以向上的軸線為參考軸線,角度值為正表示是順時針旋轉,角度值為負則表示為時針旋轉。

這樣的設定和一般我們在數學座標系,以向右的軸線為參考軸線的設定不同。因此當我們設定[蜘蛛1–2.3到1–2.7]的角度時,必須自己計算一下相對應的角度,再送進程式[蜘蛛1–2.2]計算sin和cos的值。下圖是一般計算軸座標時用的方向旋轉角度值設定。

(取自維基百科Polar_coordinate_system CC BY-SA 3.0

當我們執行動手做1–2的程式,可以看到和動手做1–1幾乎一模一樣的效果。按下空白鍵可以切換變數在舞台的顯示或隱藏。

座標系的維度

我們常常形容小螞蟻生活在二維空間,因為對於我們人類來說小螞蟻好像都在同一個平面爬行。這樣的活動空間對應到卡氏座標系,就是一個有x軸和y軸的座標系。

當我們用眼睛看自己身處的空間,會發現有前、後、左、右、上、下六個方向,這是一個三維的空間,也可以理解成是2維的平面加上高度形成了一個具有體積的空間。在卡氏座標系只要加上一根垂直的z軸就可以表示這樣的三維立體空間。

三維卡氏座標系任一點座標寫成(x, y, z)。下圖的圓點座標是(0, 0, 0),空間裡的黑點對映x刻度為2,y刻度為3,z刻度為4,這個點的座標就寫成(2, 3, 4)。

(取自維基百科Euclidean_space

事實上歐幾里得空間可以定義不同的「維度」(dimension),所謂維度可以想成是獨立的空間和時間的座標數目。

一個點沒有長度,被視為0維。

一條線是單一方向的延伸,被視為1維。

一個面是長度和寬度形成的面積,被視為2維。

一個立體是長寬高形成的體積,被視為3維。

下表中列舉不同的座標系來描述維度裡的相對位置,我們可以看到除了最常用的卡氏座標系外,還有各種不同的座標系,也各有不同的應用。舉例來說,我們繪製地圖的時候就常用經緯度座標系,來描述地球表面上的任一點座標。

我們生活的空間就是一個三維空間,因此不容易想像四維空間是什麼。由於時間也是一種量測的座標,古希臘人就已經將時間座標納入維度,這種時空的概念被視為四維空間。

閔考斯基,德國數學家(1864–1909),四維時空理論創立者。

二十世紀初的德國數學家閔考斯基(Hermann Minkowski)是愛因斯坦在蘇黎世大學念書時的教授。閔考斯基以愛因斯坦的狹義相對論出發,結合歐幾里得空間和時間建立了四維的流形時空座標系的模型,被稱做「閔考斯基時空」。這種時空座標系的模型之後又成為愛因斯坦在發展廣義相對論時的重要理論基礎。

自古以來,人類對於空間和時間的概念有難以抗拒的好奇心,想從空間和時間的研究中得到「我是誰」的答案。座標系是描述空間和時間的好工具,從歐幾里得到笛卡爾,再到近代的愛因斯坦、閔考斯基,藉由座標系的描述,人類漸漸建構出一套方法,供以後繼起的研究者探究更多時空的祕密。

延伸閱讀:

Scratch & Math: 天花板上的蜘蛛(一) Scratch & Math: 天花板上的蜘蛛(二)

Scratch & Math: 直線裡的宇宙觀(一) Scratch & Math: 直線裡的宇宙觀(二)

Scratch & Math: 不能說的祕密(一) Scratch & Math: 不能說的祕密(二)

--

--

Peter Wei

DIY, Scratch, Math, Essay, Book, Travel, Movie, Music