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

Peter Wei
9 min readApr 14, 2017

--

笛卡爾(Descartes)是生於十六世紀末的法國數學家和哲學家,今天我們熟悉的"卡氏座標系"便是他的發想。特別的是,笛卡兒的靈感竟然來自於房間天花板上的一隻小蜘蛛!在這一篇文章裡,我們要介紹卡氏座標系和二維空間的關係,並且利用scratch裡的角色移動實際練習一下卡氏座標系上的座標變化。

數學關鍵字: 二維卡式座標系。

數學家:歐幾里得、笛卡爾。

程式關鍵字: 程式可讀性。

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

歐幾里得與幾何

幾何(geometry)在古希臘語裡是土地丈量的意思。因為生活中實際丈量的需要,許多文化都累積了關於長度、面積和體積的知識,漸漸發展成一門研究物體形狀、大小、相對位置和空間特性的學問。

歐幾里得,古希臘數學家,出生西元前四世紀中期,著有「幾何原本」,成為歐洲數學的基礎。

古希臘著名的學者歐幾里得(Euclid)把公元前七世紀以來希臘累積的豐富幾何學知識做出系統性整理,討論平面幾何裡的圓、弦、角度等等定理,也縯繹了用直尺和圓規來畫三角形、四邊形和多邊形的方法,而為世人留下了巨著「幾何原本」(Elements)。

歐幾里得平面幾何的推導基於五條公理(axiom),

1. 任何兩點之間可畫一直線。

2. 任意線段能無限延伸成一條直線。

3. 給定任意線段,可以以其一個端點作為圓心,該線段作為半徑作一個圓。

4. 凡直角都相等。

5. 若兩條直線都與第三條直線相交,並且在同一邊的內角之和小於兩個直角,則這兩條直線在這一邊必定相交。

整個西方數學領域依賴「證明」這個理論做為中心思想。在這個體系裡,一開始會設立一組公理,也就是一些不證自明的概念敘述,再以公理為基礎做邏輯性的推導證明,歸納出的結果被稱作定理(theorem)。

歐幾里得透過他所定義的五條公理,建立了一個漂亮的幾何體系,千年來屹立不搖。他的基礎概念是點和線,由此開展出對於「空間裡的點」「空間裡的線」通用的詮釋。他的研究奠定了歐洲的數學發展,因此平面幾何也被稱為「歐幾里得幾何」(Euclidean geometry),來紀念這位偉大的古希臘數學家。歐幾里得幾何的影響深遠,在中世紀的歐洲大學,幾何與文法、邏輯、修辭、算術、天文、音樂並稱為七藝,是大學的基礎通才課程之一,啟發了無數的後繼研究。

歐幾里得所處的時代約在公元前三百年左右,當時的托勒密國王曾問歐幾里得說:「學習幾何有沒有捷徑?」

歐幾里得回答:「幾何學內沒有君王之路。」

學習幾何沒有特別的捷徑,即使是君王也一樣。歐幾里得擲地有聲的回答也預告了未來歐洲上千年幾何學緩慢的發展。直到笛卡爾(Descartes)的出現,才為幾何學開創出新的道路。

笛卡爾與卡氏座標系

笛卡爾是十七世紀初的法國數學家和哲學家,他出生在一個富裕的貴族之家,卻自幼體弱多病。學校特別准許笛卡爾早上不必到校上課,可以在自家的床上讀書。成年後的笛卡爾展露出過人的數學天份,有一次他在荷蘭的街上看到一群人聚集在一張告示前面,一問之下原來是在為一個數學問題公開徵答。笛卡爾隨口說這個題目簡單得很,並且立刻提出答案。旁觀者中剛好有荷蘭學院的校長,驚艷於笛卡爾優秀的數學能力,給予他很多鼓勵,後來笛卡爾也就投入這位校長門下繼續做數學研究。

笛卡爾,法國數學家、哲學家(1596–1650),解析幾何之父,西方現代哲學奠基人。

在笛卡爾的時代,承繼歐幾里得研究成果的幾何學和鑽研數字計算的代數學仍然是分開的數學領域。但是笛卡爾始終對於一個問題很感興趣,他想知道要幾何圖形裡的「點」是否能表示出代數方程式裡的「數」?

代數的概念很簡單,除了算術中的數字和加、減、乘、除四則運算,另外使用像是x、y、a、b等等的符號來表示數字,這些符號稱之為變數。引入了代數的概念,人們就可以把算術描述成像是a+1=2這樣的等式,進一步再來求解變數的值。

笛卡爾不斷研究思索著結合幾何和代數的線索。據說有一天他臥病在床,卻仍然不斷地在想這個問題。正當百思不得其解的時候,笛卡兒看到了天花板上一隻蜘蛛拉絲垂線,突然間他有了靈感。

蜘蛛就像房間裡的一個小點,如果能用一組數字將蜘蛛的位置確定下來,就可以將「點」和「數」的關係連繫起來。笛卡兒躺著望向天花板,想像房間內兩面垂直的牆壁和天花板構成兩條軸線,軸線上有等距的小刻度,蜘蛛對應的軸線刻度就會是一組獨特的數字。

自此笛卡兒開始發展出我們熟悉的x-y垂直座標系,而這樣的座標系統也被命名為「卡氏座標系」(Cartesian coordinate system)。

下圖是一個常見的卡氏座標系,我們利用這張圖來觀察卡氏座標系的特徵。

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

座標軸:在這個平面座標系裡有兩條互相垂直的軸線。水平的軸線稱為x軸,垂直軸線稱為y軸線。軸線上被劃分為小小等距的刻度。

座標:平面的每一個點都可以根據x軸和y 軸的刻度找到一組獨特的相對應數字座標。例如圖中的點P對映到x軸座標3和y軸座標5,它的座標就標示為(3, 5)。

原點:水平x軸和垂直y軸的交點被稱做「原點」(origin),標示座標為(0, 0)

卡氏座標系把平面空間裡每一個「點」都對映到一組座標「數」,讓我們可以把幾何和代數兩個不同的世界連結在一起。

幾何圖形標示出直線通過兩個「點」,兩點的座標「數」分別是(x1, y1)和(x2, y2)。

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

在卡氏座標系裡的,斜率代表了一條直條傾斜的程度。在直線上找到任意兩點,我們可以利用兩間座標的縱軸變化量除以橫軸變化量,來求出直線斜率。以上圖為例,對直線任意座標(x, y)來說,到點(x1, y1)和點(x2, y2)會有相同的斜率,於是可以寫出如下的直線方程式,

如此一來,幾何圖形可以被轉換為方便計算的代數方程式,而我們也可以透過幾何圖形「看見」代數方程裡變數之間的關係。

笛卡爾的貢獻在於把原本完全沒有關係的幾何和代數連繫在一起,成功地向世人證明了幾何問題可以歸結為代數問題,而代數的運算也可以用來發現和證明幾何問題。

笛卡爾將他的這些發現記錄在其著作「方法論」附錄「幾何」裡。後繼的數學家們開始用不同的代數方程式來表示直線、圓、圓錐曲線等等各式各樣的幾何圖形,這些知識逐漸累積發展為一門被稱為「解析幾何」(analytic geometry)的學問,為日後牛頓和萊布尼茲提出的微積分提供了重要的基礎。

動手做 1–1 小蜘蛛結網

[程式設計需求規格]

我們要用Scratch來設計一個蜘蛛結網的遊戲,遊戲分成兩部分。

第一部分是蜘蛛結網,在蜘蛛走過的路徑上畫出蜘蛛網。

第二部分是當結網的動作完成後,一隻蝴蝶開始飛舞,當蝴蝶碰到蜘蛛網會被黏住,蜘蛛走到蝴蝶位置說「抓到了」。

[程式設計角色和舞台]

在這個程式裡有兩個角色,都能從Scratch範例庫直接選取。背景是自己畫的左右兩個樹幹,讓蜘蛛在樹幹中間結網。

點選表格可放大

[程式設計解決方案]

Scratch的舞台本身就是一個卡式直角座標系,正中心是原點,座標。當我們移動滑鼠游標時,舞台右下方的x和y座標就會跟著變動,指出滑鼠游標的位置。

在「動作」類別內有程式指令「移到x: y:」,當我們移動角色位置的時候,指令內x和y的值會立即改變,以反應角色現在位置。下圖中我們用滑鼠將角色小貓往右拉動,就會看到指令內x和y的值隨之變化。

接下來我們就要用這個移動指令直接控制蜘蛛的角色,同時利用「下筆」指令,讓蜘蛛走過的地方都畫出蜘蛛網線條。

點選表格可放大
觀念平台:程式可讀性在程式[蜘蛛1–1.1]我們使用了自創的客製積木[蜘蛛1–1.2到1–1.6]來畫蜘蛛網軸線和線圈。這種做法可以讓程式[蜘蛛1–1.1]變得簡潔易讀。想像一下,如果將程式[蜘蛛1–1.2到1–1.6]全部放進[蜘蛛1–1.1],那[蜘蛛1–1.1]會變得又長又雜亂,如果有任何問題想修改都會變得很不容易。在程式設計裡有一個重要的概念叫做程式可讀性。因為程式設計師其實須要花費很大一部分時間來閱讀、檢視和修改程式,這些程式可能是自己很久以前寫的,也可能是別人寫的。如果程式很雜亂難懂,程式設計師要維護這段程式就要花費很多時間,而且不容易維護得好,終會造成程式有臭蟲(bug),執行起來沒有效率,或是留下了重複無用的程式碼。要增加程式可讀性,可以善用程式註解(comments)、程式分解(就像我們在這裡增加的客製積木)和有意義的命名(例如我們將客製積木取名為「畫軸線」「畫第一圈」)。當我們寫完程式,過一陣子可以再回頭閱讀一下我們自己寫的程式,常常會發現之前寫的程式已經有點看不懂或是寫不好的地方,這個時候對程式做修改常常可以讓程式變得更完善。

[程式檢視]

程式[蜘蛛1–1.2]到[蜘蛛1–1.6]用了許多移動的指令,對角色直接指定的平面二維座標(x, y)。這樣的方法很直接,但是要花費不少心力調整座標的設定。

程式[蜘蛛1–1.1]是起動蜘蛛角色的主程式,使用自創的客製化積木可以讓程式簡潔易讀許多。

當按下小綠旗開始執行程式,角色蜘蛛會先畫出連接樹幹的六條蜘蛛絲,然後在繞圈結網。整個蜘蛛網完成後角色蝴蝶出現,當蝴蝶被蜘蛛網纒住後,角色蜘蛛就會移動到蝴蝶的位置。

延伸閱讀:

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

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

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

--

--

Peter Wei

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