我把 sqrt(z^2-1) 做成魔術方塊了!

更新於 發佈於 閱讀時間約 2 分鐘

play: Space Rift

sqrt(z²-1) 無法完全畫在紙上,因為平方根有兩個解。畫出來看到一條不連續的線:

sqrt(z-1) sqrt(z+1)

sqrt(z-1) sqrt(z+1)


為什麼一個簡單的解析函數會產生不連續的結果?這證明了並不是所有的東西都被繪製出來了。

平方根 c = sqrt(z) 被定義為方程 c² = z 的解,這個方程有兩個解,但我們通常只取其中一個。例如,我們一般會說 sqrt(4) 是 2,但事實上它也可以是 -2。如果輸入值是正的,我們總是選擇正的那個解。這個選擇不錯,因為它是連續的:當輸入緩慢改變時,輸出也會平滑地變化。但如果我們考慮複數,情況就會變得複雜。由於複數有更多的自由度,它可以在兩個方向上變化。當輸入 z 圍繞原點移動時,即在 z = e^(it) 中變化 t,輸出的值可以是 sqrt(z) = e^(it/2),這樣函數就是連續的。然而,如果它繞原點一圈,輸出會在符號上有差異:sqrt(e^(2πi)) = e^(πi) = -1。

上面畫的圖只用了平方根的一個解,還有另一個隱藏的部份畫在下面的圖層上。圖中的不連續線(稱為 branch cut)就像是這個二維空間中的一個空間裂縫,這是通向隱藏圖層的大門。如果這個空間中有生物,它會透過這個大門看過去而不會注意到 branch cut。branch cut 是由於解的選擇而造成的人工產物,如果我們做出不同的選擇,就可以改變這個 branch cut 的位置。我們這樣畫是因為我們沒有合適的紙張來放這個畫作。然而,當二維生物望向 1+0i 點時,會注意到左右的視野是不同的(稱為 branch point)。這就像遊戲《Antichamber》一樣,通過不同的窗戶看到的景色是不同的。

用 sqrt(z²-1) 做成的平面魔術方塊實際上就是做在這樣空間上的平面魔術方塊。這其實只是在一個奇怪空間上的平面魔術方塊。與普通平面魔術方塊不同的是,一個面要旋轉 720 度才能轉一圈,因為它的邊塊和角塊在旋轉時會移動到另一個圖層上。這個拼圖的抽象模型就像是普通的魔術方塊一樣,但要把它畫在二維空間上並不容易,因為我們需要根據 branch cut 的位置來決定應該繪製哪一部分。為了強調 branch cut 與這個結構無關,我讓它能夠自由移動。

avatar-img
4會員
28內容數
這不是教你如何從物件導向到函數式編程的入門教程。我會深入探討物件導向與函數式編程的差異,並討論為什麼你應該使用函數式編程並徹底放棄物件導向。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
have bear的沙龍 的其他內容
如果你曾經試圖學習函數式編程,並嘗試理解Monad,但看到文件上的定義卻一個字都看不懂,使用的術語、概念和一般常見的語言又很不一樣。網路上的教程往往都是以最簡單的範例試圖解釋Monad,但看到實際案例後又發現你完全不懂。事實上大部分教程的描述並不適用於「所有」的Monad,甚至在某方面來說是錯的,就
對於程序式編程來說,程式是由一系列的指令組成,例如計算數值、印出訊息、修改變數、呼叫子程序、配置變數的記憶體空間等。定義函式是為了讓一些程序可以重複利用,因此稱為子程序,其中參數為子程序中特別的變數,讓我們能夠透過它們控制子程序的行為。函式的回傳值只是一種方便將結果帶回來的方法,但一般只能回傳一個值
函數式編程跟物件導向一個很大的差異在於對資料可變性(mutability)的態度,函數式編程不鼓勵修改原有的資料,有些語言甚至沒有修改的概念;而物件導向專注於狀態的改變,物件作為閉包就已經假設資料是可變的。這種對於可變性的態度注定物件導向比較容易得到關注,因為這個模型比較符合電腦底層的運作邏輯,而我
如果你曾經試圖學習函數式編程,並嘗試理解Monad,但看到文件上的定義卻一個字都看不懂,使用的術語、概念和一般常見的語言又很不一樣。網路上的教程往往都是以最簡單的範例試圖解釋Monad,但看到實際案例後又發現你完全不懂。事實上大部分教程的描述並不適用於「所有」的Monad,甚至在某方面來說是錯的,就
對於程序式編程來說,程式是由一系列的指令組成,例如計算數值、印出訊息、修改變數、呼叫子程序、配置變數的記憶體空間等。定義函式是為了讓一些程序可以重複利用,因此稱為子程序,其中參數為子程序中特別的變數,讓我們能夠透過它們控制子程序的行為。函式的回傳值只是一種方便將結果帶回來的方法,但一般只能回傳一個值
函數式編程跟物件導向一個很大的差異在於對資料可變性(mutability)的態度,函數式編程不鼓勵修改原有的資料,有些語言甚至沒有修改的概念;而物件導向專注於狀態的改變,物件作為閉包就已經假設資料是可變的。這種對於可變性的態度注定物件導向比較容易得到關注,因為這個模型比較符合電腦底層的運作邏輯,而我
你可能也想看
Google News 追蹤
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~