緣起
把一個立體沿著稜線剪開、攤平成一片,得到的圖叫展開圖(net)。這種畫法最早見於 1525 年杜勒(Albrecht Dürer)的《量度四書》(Underweysung der Messung)——他把多面體攤開來畫,讓工匠照圖裁切、摺回立體。幾百年來大家理所當然地這樣做,沒人問過:這件事是不是永遠做得到?[1]
1975 年,英國幾何學家 Geoffrey C. Shephard 在論文〈Convex polytopes with convex nets〉裡把這個直覺寫成一個明確的問題:[2]
Shephard 猜想:任何凸多面體,都存在至少一種沿邊剪開的方式,使得攤平後的展開圖不會自我重疊。
「沿邊剪開」等價於在多面體的面之間選一棵生成樹(spanning tree):樹上的邊是摺線(鉸鏈),其餘的邊全部剪開。一個多面體有非常多棵生成樹,猜想只要求其中一棵攤平後不重疊。因為問題可以追溯到杜勒,文獻上也常叫它杜勒問題(Dürer's problem)。[1][3]
這個工具在做什麼
- 切法就是一棵生成樹。你在立體上點面,就是在面—面相鄰圖上長一棵樹:樹上的邊當鉸鏈展開,不在樹上的邊被剪開。這是攤平演算法的標準做法,不是近似。攤平本身用剛體旋轉配準(每個子面沿共用邊貼到父面旁邊),邊長不失真。
- 重疊偵測用凸多邊形的分離軸定理(SAT)。共用一條鉸鏈邊的兩個面本來就會貼在一起,所以跳過不檢查——為什麼可以跳過,下面「瓶頸在哪」會說。
- 五種柏拉圖立體:正四面體/立方體/正八面體用手動指定的面;正十二面體/正二十面體只手動給了頂點座標(黃金比例構造),面則是先算真正的 3D 凸包(三角化),再把法向量相同的三角形合併回正確的多邊形——沒有手動輸入過面的頂點順序,降低記錯資料的風險。
- 「隨機凸多面體」用真正的 3D 凸包演算法(incremental hull)現場算:隨機灑點、算凸包、自動修正法向朝外——不是預先畫好的形狀。上線前在瀏覽器外用歐拉公式(V − E + F = 2)、法向一致性、所有點都在凸包內三項測試跑了幾十次隨機案例驗證這個演算法,都通過。
- 「角缺陷」層:每個頂點 θ = 360° − 聚在該頂點的面內角總和。缺角是頂點的內在性質,跟切法無關;切法只決定它在展開圖上會不會被切散。沒被切散的頂點標橘色,缺角就是那裡少掉的一塊紙。
已知的事
- 不是每棵生成樹都行。即使是簡單的凸多面體,隨便選一棵生成樹,攤平後很容易撞在一起;面越多,隨機剪法重疊的機率越高。猜想說的是「存在一棵好的」,不是「每一棵都好」。[3]
- 放寬剪法就沒問題了。如果允許剪線穿過面的內部(不限於沿邊),星形展開(star unfolding)與源點展開(source unfolding)已被證明對任何凸多面體都不重疊。難的只在「限定沿邊」這一條。[4][3]
- 拿掉凸性就有反例。非凸多面體可以構造出「怎麼沿邊剪都會重疊」的例子——即使每個面本身都是凸多邊形。所以凸性不是可有可無的假設,是猜想成立的關鍵。[5]
- 拉一拉就能解。Ghomi(2014)證明:任何凸多面體,只要施加一個適當的仿射變換(沿某方向拉長),就變成沿邊可展開的。這說明重疊是幾何度量的問題,不是拓撲結構的問題。[6]
- 電腦能驗個案,不能驗全部。對於特定的多面體,窮舉生成樹可以確認「有好的剪法」;但凸多面體有無窮多種,逐一驗證不構成證明。
瓶頸在哪
凸多面體的「凸」給了兩個局部條件:每個頂點的角缺陷 θ > 0(頂點是尖的),每條邊的二面角小於 180°(沿邊摺的方向是「打開」)。這兩個條件足以保證:
- 共用一條邊的兩個面,攤平後一定落在那條邊的兩側,不重疊;
- 共用一個頂點的幾個面,繞著那個頂點攤開後總角度不到 360°,留下 θ 的空隙,也不重疊。
也就是說,凡是相鄰的面,凸性都已經替它們擔保了——這也是工具裡重疊檢查可以跳過相鄰面的原因。真正沒有任何條件管的,是完全不相鄰(既不共邊也不共頂點)的兩個面。它們各自沿生成樹繞了一長串轉折才到達最終位置,途中每一步只保證「跟自己的父面不重疊」,沒有任何機制保證繞了一大圈之後,兩塊原本八竿子打不著的面不會剛好疊在一起。
局部的部分已經被凸性鎖死,開放的只剩全域這一塊——這就是猜想五十年來只能靠電腦驗證個案、還沒有一般性證明的原因。
順帶一提,所有頂點的角缺陷加總,對任何凸多面體都恰好是 720°(4π)——這是 Descartes 定理,離散版的高斯–博內定理。工具裡開「角缺陷」就會即時驗證。[7]
實驗筆記
老實說一個測試發現:不管是三個手動指定的正多面體、拉長變形的版本,還是幾十個隨機凸包,跑了幾千次隨機展開樹,沒有出現過一次重疊。這跟數學界的實際經驗一致——大量電腦實驗都沒找到反例,這正是 Shephard 猜想至今仍只是「猜想」而非「已被推翻」的原因,不是這個原型的缺陷。面數更多、形狀更扁的凸多面體,隨機剪法重疊的機率會明顯上升;想看到紅色,可以試著自己設計一棵繞遠路的生成樹。
這個原型目前只放了凸多面體,沒有示範非凸的反例。
參考
- [1] Wikipedia: Net (polyhedron)——展開圖的歷史(杜勒)與 Shephard 猜想現況。
- [2] Shephard, G. C. (1975). Convex polytopes with convex nets. Mathematical Proceedings of the Cambridge Philosophical Society, 78(3), 389–403. doi:10.1017/S0305004100051860(出版社頁面常擋,備援:zbMATH Open Zbl 0312.52011/Semantic Scholar)
- [3] Demaine, E. D., & O'Rourke, J. (2007). Geometric Folding Algorithms: Linkages, Origami, Polyhedra. Cambridge University Press. 第 22 章專論邊展開與杜勒問題。gfalop.org
- [4] Aronov, B., & O'Rourke, J. (1992). Nonoverlap of the star unfolding. Discrete & Computational Geometry, 8, 219–250. doi:10.1007/BF02293047
- [5] Bern, M., Demaine, E. D., Eppstein, D., Kuo, E., Mantler, A., & Snoeyink, J. (2003). Ununfoldable polyhedra with convex faces. Computational Geometry, 24(2), 51–62. doi:10.1016/S0925-7721(02)00091-3/arXiv:cs/9908003
- [6] Ghomi, M. (2014). Affine unfoldings of convex polyhedra. Geometry & Topology, 18(5), 3055–3090. doi:10.2140/gt.2014.18.3055/arXiv:1305.3231
- [7] Wikipedia: Angular defect——Descartes 定理 Σθ = 4π。
A collaborative project by roylin1003 and Claude.