向左轉﹡向右轉

更新於 發佈於 閱讀時間約 4 分鐘
構成L-system的,是一串由符號所構成的字串。這字串裡頭的符號,可以是字母或者是任何喜歡的鬼畫符,想要用emoji也可以,只要你喜歡,沒什麼不可以。
雖然說只要喜歡,沒什麼不可以,不過除非是想展現讓人不明所以,看多了會燒壞腦袋瓜的藝術天分,不然最好還是用大家習慣上常用的符號,正所謂入鄉隨俗是也。這就好像圓週率,全世界都已經習慣用π來代表,你卻非得用個x不可,這不是自找麻煩嗎?即便你事先有說明,人家在看的時候,還是得多花精神去注意你的x是圓週率,不是什麼未知的變數,那實在是很累人又容易搞錯。所以囉,寫東西前,先看看那個圈子裡頭有沒有什麼「慣例」,是個好習慣。
說起「慣例」這檔事,就不免想到,以前在學資料庫時,會說到資料庫「抓」資料。不過事隔多年後,卻發現大家說的是到資料庫「撈」資料。雖然一開始有點不習慣,不過還是跟著說「撈」資料,反正不管是抓魚還是撈魚,有得吃最重要。這正是所謂見人說人話、見鬼說鬼話,使用相同的「行話」,也就是語言「慣例」,會讓人比較覺得你是同一國的,溝通起來會容易一些。
看了幾篇網路上關於使用turtle搭配L-system來畫出漂亮圖案的文章,文章中,L-system字串裡頭的符號所代表的意義,大致上都差不多。用turtle畫圖時,畫筆的動作不外乎是:移動並畫線、移動但不畫線、轉角度等。所以L-system中的符號所代表的,大致上也就是這些動作。例如F、G代表沿目前的方向,移動一段事先定好的距離,並畫下直線;f、g則只是移動,不畫線。左中刮號 [ ,是把目前的狀態(包含位置和方向)push進stack中;右中刮號 ] ,則是pop出stack中的狀態。不過,轉角度這個動作,雖然不同的文章都是用+、- 來代表,但有些卻有著相反的設定,有的文章用+來代表向右轉,而用 - 代表向左轉;有的文章則倒過來,用+來代表向左轉,而用 - 代表向右轉。這實在是個有趣的現象。
之所以會覺得有趣,是因為想起數學課學到座標系統和三角函數時的痛苦。在數學中,逆時針方向轉動的角度是正的,而順時針方向轉動的角度是負的。當時可是花了不少功夫才適應這樣子的設定。直覺上,總覺得順時針方向的角度是正的,而逆時針方向的角度是負的。所以在寫程式時,當寫到要用哪個符號來代表向左轉時,本來直覺的就選了 - ,後來理性思考後,還是決定依照數學上的用法,用+來代表向左轉,畢竟用turtle畫圖時,所使用的,就是數學上的直角座標系統。事後想想,還真是好奇,不知道那些在向左轉、向右轉選用不同設定的作者,是基於什麼樣的原因,選用那樣子的設定。
或許不同的向左轉、向右轉符號設定,背後並沒什麼特別的原因,就只是單純的隨意選擇而已。不過,如果對照左、右中刮號的用法,卻總覺得事情沒那麼單純。
用左中刮號 [ 來代表把狀態push進stack中,感覺上是那麼的自然、順暢,而且大家是有志一同,都這麼設定。但在用 +、- 來代表轉動的方向時,卻出現了分歧。越想越覺得,這裡頭應該有些什麼有趣的原因。
先來看看左中刮號 [ 好了。很明顯的,這左中刮號的長相,就是個開口向右的容器。要把東西塞到這樣的容器裡頭,對於右撇子而言,當然就是左手拿容器,右手拿東西用力塞進去。這感覺多順啊!既然大多數人都是右撇子,這樣子的設定,應該就會是大多數人的選擇。所以囉,網路上看到的,都是這樣子的設定,也就沒什麼好奇怪的了。
左中刮號有形象上的解釋,那+、- 呢?仔細想想,還真是一人一把號,各吹各的調。數學上逆時針方向的角度是正的,但是日常生活中,卻有不少東西的設計,是採用順時針方向代表增量的設定,例如音響的旋鈕、汽、機車時速表,乃至於許許多多的儀表等,都是這樣的設計。或許是這樣的原因,才導致在選用+或 - 來代表向右轉時,大家會有不同的選擇。不過話又說回來,那些旋鈕、儀表,當初為什麼會設計成順時針方向是增量呢?好奇耶!
即將進入廣告,捲動後可繼續閱讀
為什麼會看到廣告
avatar-img
15會員
131內容數
寫點東西自娛娛人
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
ysf的沙龍 的其他內容
一直以來都是靠手動的方式來進行檔案的版本管理,也就是自己複製檔案,然後改檔名,加入可以識別的編號。不過,越來越覺得,有必要用版本控制系統來幫忙,因為手動的方式實在很累人,而且當需要查找以前更動的內容時,非常沒有效率。當發現Spyder也有支援Git時,就想著:「好吧!那就試用看看好了。」
看到了一段程式碼,一段乍看之下覺得挺詭異,懷疑是不是寫錯,但搞清楚之後卻拍案叫絕,冷靜下來後卻覺得這樣寫不怎麼好的程式碼。
寫程式最怕碰到的,就是信心滿滿地寫好程式後,發現結果不如預期,而且完全看不出問題出在哪裡。這種慘況可以分成兩種:一種是程式很長、很複雜,想要把心機很重,躲在幽暗深處的臭蟲給抓出來,即使有功能強大的除錯工具,都不是件簡單的事;另一種是程式沒幾行,一切看起來都很清楚正常,臭蟲根本沒地方躲藏,可是結果就是
解決了Spyder和turtle之間的不合後,就來畫些漂亮迷人的fractal圖案,也順便練習一下recursive function的寫法。
龜兔賽跑,第一回合兔子因為太輕敵,在半路上呼呼大睡睡過頭,輸了比賽。 雖然輸了第一回合的比賽,不過兔子並沒有灰心喪志,牠記取教訓,買了個功能齊全的運動手錶來戴,睡覺前先定好鬧鐘時間,這樣就不怕睡過頭而輸了比賽。從此龜兔賽跑,兔子照樣在半路上睡覺補充體力,但再也沒有因為睡過頭而輸了比賽。
「學程式,數學要很好嗎?」這問題的答案其實很簡單,就是:Yes and no。
一直以來都是靠手動的方式來進行檔案的版本管理,也就是自己複製檔案,然後改檔名,加入可以識別的編號。不過,越來越覺得,有必要用版本控制系統來幫忙,因為手動的方式實在很累人,而且當需要查找以前更動的內容時,非常沒有效率。當發現Spyder也有支援Git時,就想著:「好吧!那就試用看看好了。」
看到了一段程式碼,一段乍看之下覺得挺詭異,懷疑是不是寫錯,但搞清楚之後卻拍案叫絕,冷靜下來後卻覺得這樣寫不怎麼好的程式碼。
寫程式最怕碰到的,就是信心滿滿地寫好程式後,發現結果不如預期,而且完全看不出問題出在哪裡。這種慘況可以分成兩種:一種是程式很長、很複雜,想要把心機很重,躲在幽暗深處的臭蟲給抓出來,即使有功能強大的除錯工具,都不是件簡單的事;另一種是程式沒幾行,一切看起來都很清楚正常,臭蟲根本沒地方躲藏,可是結果就是
解決了Spyder和turtle之間的不合後,就來畫些漂亮迷人的fractal圖案,也順便練習一下recursive function的寫法。
龜兔賽跑,第一回合兔子因為太輕敵,在半路上呼呼大睡睡過頭,輸了比賽。 雖然輸了第一回合的比賽,不過兔子並沒有灰心喪志,牠記取教訓,買了個功能齊全的運動手錶來戴,睡覺前先定好鬧鐘時間,這樣就不怕睡過頭而輸了比賽。從此龜兔賽跑,兔子照樣在半路上睡覺補充體力,但再也沒有因為睡過頭而輸了比賽。
「學程式,數學要很好嗎?」這問題的答案其實很簡單,就是:Yes and no。
你可能也想看
Google News 追蹤
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
為了打破慣性 開始用左手畫畫 也想著每天還能做一些什麼不同的選擇呢
Thumbnail
為了要打破慣性思考,開發右腦,最近開始刻意多使用左手。
  最近有筆友對於一些標點符號的用法有疑問,因此想說寫一下詳細一些些的解釋,以及說說我個人的觀點。   首先是之前在直言中提及的,對話用法的引號前究竟該用什麼符號?   一樣,為了方便理解,我會把對話分成「直接對話」和「間接對話」兩種。   首先是「直接」,舉凡「道」、「說」、「曰」……等等各
Thumbnail
首先是Y-Δ轉換口語的念法,筆者習慣稱為Y-Delte轉換,直接以英文發音為主;而它還有個中文名稱為星角轉換,也就是星形跟三角形轉換。 這是一份筆者常常使用的小工具,用來快速調整Y接或Δ接馬達設計變換時,線圈繞線條件的更改;但作為馬達設計者而言,是絕不需要考慮的Δ接設計方案。主要是Δ接會在馬達的三
Thumbnail
直觀理解 導數:考慮的是單一變數的函數,描述的是函數在某點的斜率或變化率。 偏導數:考慮的是多變數函數,描述的是函數在某個變數變化時的變化率,其他變數保持不變。  (針對各維度的調整 或者稱變化 你要調多少) 應用 導數:在物理學中應用廣泛,例如描述速度和加速度。 偏導數:在多變量分析、優
Thumbnail
左右手真的可以互通知覺嗎? 精選跟數學有關的搞笑諾貝爾獎!一起探究科學研究背後的數學原理! 《異想天開的有趣科學5:左手癢,抓右手也可以?》將帶你一探「幾何」圖形的魅力!
說明方塊社會計量的目標、一般性運用原則、延伸與提醒、問句舉例。
Thumbnail
這篇文章,會帶著大家複習以前學過的 區間DP框架, 並且以回文子字串、回文子序列的應用題與概念為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 回文字串的基本定義 s = s[::-1] 也就是說字串s的正序 和 逆序完全相同。 回文字串的基本結構 空字串"
Thumbnail
題目敘述 題目給定我們一個輸入陣列nums 要求我們以正、負交叉排列的方式重組陣列,並且必須保持原本的相對順序。 並且以陣列的形式輸出返回答案。 例[5, 1, -2, -3] 重排後為 [5, -2, 1, -3] 題目的原文敘述 測試範例 Example 1: Input:
Thumbnail
曾經對一個數學不好,但是喜歡玩電玩的親友小孩說,你現在討厭的正數,負數的代數計算,就是電玩裡頭的人物,可以左右上下移動,發射子彈,跳躍的基礎。 我舉微軟c語言寫遊戲的例子,(+,0)是向右,(-,0)是向左,(0,+)是向上,(0,-)是向下,(0,+)是向上,而跳躍旋轉則是三角函
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
為了打破慣性 開始用左手畫畫 也想著每天還能做一些什麼不同的選擇呢
Thumbnail
為了要打破慣性思考,開發右腦,最近開始刻意多使用左手。
  最近有筆友對於一些標點符號的用法有疑問,因此想說寫一下詳細一些些的解釋,以及說說我個人的觀點。   首先是之前在直言中提及的,對話用法的引號前究竟該用什麼符號?   一樣,為了方便理解,我會把對話分成「直接對話」和「間接對話」兩種。   首先是「直接」,舉凡「道」、「說」、「曰」……等等各
Thumbnail
首先是Y-Δ轉換口語的念法,筆者習慣稱為Y-Delte轉換,直接以英文發音為主;而它還有個中文名稱為星角轉換,也就是星形跟三角形轉換。 這是一份筆者常常使用的小工具,用來快速調整Y接或Δ接馬達設計變換時,線圈繞線條件的更改;但作為馬達設計者而言,是絕不需要考慮的Δ接設計方案。主要是Δ接會在馬達的三
Thumbnail
直觀理解 導數:考慮的是單一變數的函數,描述的是函數在某點的斜率或變化率。 偏導數:考慮的是多變數函數,描述的是函數在某個變數變化時的變化率,其他變數保持不變。  (針對各維度的調整 或者稱變化 你要調多少) 應用 導數:在物理學中應用廣泛,例如描述速度和加速度。 偏導數:在多變量分析、優
Thumbnail
左右手真的可以互通知覺嗎? 精選跟數學有關的搞笑諾貝爾獎!一起探究科學研究背後的數學原理! 《異想天開的有趣科學5:左手癢,抓右手也可以?》將帶你一探「幾何」圖形的魅力!
說明方塊社會計量的目標、一般性運用原則、延伸與提醒、問句舉例。
Thumbnail
這篇文章,會帶著大家複習以前學過的 區間DP框架, 並且以回文子字串、回文子序列的應用題與概念為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 回文字串的基本定義 s = s[::-1] 也就是說字串s的正序 和 逆序完全相同。 回文字串的基本結構 空字串"
Thumbnail
題目敘述 題目給定我們一個輸入陣列nums 要求我們以正、負交叉排列的方式重組陣列,並且必須保持原本的相對順序。 並且以陣列的形式輸出返回答案。 例[5, 1, -2, -3] 重排後為 [5, -2, 1, -3] 題目的原文敘述 測試範例 Example 1: Input:
Thumbnail
曾經對一個數學不好,但是喜歡玩電玩的親友小孩說,你現在討厭的正數,負數的代數計算,就是電玩裡頭的人物,可以左右上下移動,發射子彈,跳躍的基礎。 我舉微軟c語言寫遊戲的例子,(+,0)是向右,(-,0)是向左,(0,+)是向上,(0,-)是向下,(0,+)是向上,而跳躍旋轉則是三角函