真 · 降維打擊!《三體》中二向箔吞噬地球的場景成真了!
The following article is from AI 科技評論 Author 貝爽、陳大鑫
今天我們就來講一講降維打擊——如何實現對地球 \" 從三維向二維跌落 \"。
在《三體》中,太陽系被一小片二向箔攻擊由三維降至二維的場景描述實在是太吸引人了有沒有:
啪的一聲!三維變成二維……
啊這……有點兒草率了。那下面這樣呢?
其實,以上這兩種想法最大的問題就是隻考慮了地球的表面。就像我們在玩遊戲穿模時看到的那樣,目前主流的三維建模技術採用的都是三角面,組成物體的表面,而至於物體的內部則只是空的而已。
那麼該如何實現對三維物體降維攻擊呢?
幾天前,這位 B 站 UP 主在用 threejs 框架編寫程序時,無意間發現了一個 Demo,
但研究之後,他發現這其實是大名鼎鼎的希爾伯特曲線。
正是藉助這條曲線,Up 主成功實現了對三體的降維打擊。
希爾伯特曲線
我們先來了解一下什麼是 \" 希爾伯特曲線 \"?
早在 19 世紀時數學界就掀起了一陣用一維直線填滿二維平面的熱潮,換句話説就是找到一維和二維的一個映射,起初是意大利數學家皮亞諾,沒錯,就是時不時出現在高等數學教材裏的老夥計:
希爾伯特曲線是這樣的:這是一個平面正方形,先把它畫為 4 等份,可以使用這樣一條曲線遍歷所有的四個小塊,這就是一階的希爾伯特曲線。
通過遍歷這個曲線我們就可以得到平面上所有的點,雖然希爾波特的曲線取無窮大的時候,在數學上還有很多爭議,但是對於離散系統的計算機來説,這已經很 Nice 了。
那麼,希爾伯特曲線如何實現降維?
舉個栗子:
這是一張 64 × 64 像素的圖片,每個像素剛好是一個小方塊。
不過,這種降維方式的好處是希爾伯特的曲線在遍歷的時候能夠保證二維平面局部相鄰的點在被扯成一維的時候像素點還是相鄰的,從而降維後的圖案就有自然過渡的效果。
三維降維打擊
按照上面的原理,我們就可以開始着手對三維世界的物體進行二維打擊了。
此時就要讓希爾伯特的曲線的三維結構登場了,它長下面這個樣子: