我把 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 與這個結構無關,我讓它能夠自由移動。

    4會員
    28內容數
    這不是教你如何從物件導向到函數式編程的入門教程。我會深入探討物件導向與函數式編程的差異,並討論為什麼你應該使用函數式編程並徹底放棄物件導向。
    留言0
    查看全部
    發表第一個留言支持創作者!
    have bear的沙龍 的其他內容
    如果你曾經試圖學習函數式編程,並嘗試理解Monad,但看到文件上的定義卻一個字都看不懂,使用的術語、概念和一般常見的語言又很不一樣。網路上的教程往往都是以最簡單的範例試圖解釋Monad,但看到實際案例後又發現你完全不懂。事實上大部分教程的描述並不適用於「所有」的Monad,甚至在某方面來說是錯的,就
    對於程序式編程來說,程式是由一系列的指令組成,例如計算數值、印出訊息、修改變數、呼叫子程序、配置變數的記憶體空間等。定義函式是為了讓一些程序可以重複利用,因此稱為子程序,其中參數為子程序中特別的變數,讓我們能夠透過它們控制子程序的行為。函式的回傳值只是一種方便將結果帶回來的方法,但一般只能回傳一個值
    函數式編程跟物件導向一個很大的差異在於對資料可變性(mutability)的態度,函數式編程不鼓勵修改原有的資料,有些語言甚至沒有修改的概念;而物件導向專注於狀態的改變,物件作為閉包就已經假設資料是可變的。這種對於可變性的態度注定物件導向比較容易得到關注,因為這個模型比較符合電腦底層的運作邏輯,而我
    如果你曾經試圖學習函數式編程,並嘗試理解Monad,但看到文件上的定義卻一個字都看不懂,使用的術語、概念和一般常見的語言又很不一樣。網路上的教程往往都是以最簡單的範例試圖解釋Monad,但看到實際案例後又發現你完全不懂。事實上大部分教程的描述並不適用於「所有」的Monad,甚至在某方面來說是錯的,就
    對於程序式編程來說,程式是由一系列的指令組成,例如計算數值、印出訊息、修改變數、呼叫子程序、配置變數的記憶體空間等。定義函式是為了讓一些程序可以重複利用,因此稱為子程序,其中參數為子程序中特別的變數,讓我們能夠透過它們控制子程序的行為。函式的回傳值只是一種方便將結果帶回來的方法,但一般只能回傳一個值
    函數式編程跟物件導向一個很大的差異在於對資料可變性(mutability)的態度,函數式編程不鼓勵修改原有的資料,有些語言甚至沒有修改的概念;而物件導向專注於狀態的改變,物件作為閉包就已經假設資料是可變的。這種對於可變性的態度注定物件導向比較容易得到關注,因為這個模型比較符合電腦底層的運作邏輯,而我
    你可能也想看
    Google News 追蹤
    Thumbnail
    這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
    Thumbnail
    11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
    Thumbnail
    Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
    Thumbnail
    這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
    Thumbnail
    11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
    Thumbnail
    Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液