圓與球中生存的數學

圓與球中生存的數學

在電腦圖形學中,圓圈和球體的繪製看起來很簡單,但是進一步擴展的需要並不依賴於直覺。事實上,理解圓和球的數學是解決這個問題的正確方法

生活中有很多圓形或球形的符號或物體。然而,你有沒有想過,真正的圓或球只是一個數學概念,實際上並不存在?例如,根據維基百科的“圓”條目,定義是“從同一平面上的一個固定點的距離等於一個固定長度的點集”簡單來說,從圓心到圓周上的點的距離是相等的,但這在現實中是不可能發生的。

對很多人來說,這是違背直覺的。你不能通過圓規和其他工具畫漂亮的圓嗎?

不!無論筆再怎麼細,放大到一定影響程度來看,一定會有不連續。就電腦繪圖來說,圓其實就只是正n多邊形,或者可以看成是n個相同的等腰三角形。

為了畫出一個完美的圓,n 必須接近無窮大,這是一個概念,不是一個數字,但是在電腦圖形學中,通常 n 等於96就足夠了,因為大多數人不能分辨出 n 和大於 n 的區別。

世上沒有完美的圓

許多與圓相關的問題,其實都違反許多人的直覺,面對這些問題需要數學上的思考。

例如,“在圓中均勻分佈點”。因為圓的公式是x=R*cos(θ)、y=R*sin(θ),所以很多人會隨機將0到圓半徑R之間的值取為R,將0到360度之間的值取為Rθ,然後計算座標。但這是錯誤的,因為結果是更靠近圓周的點更稀疏,而更靠近圓心的點更密集。

解決這個問題的一個方法是在圓的外接平方上隨機散佈點。如果這些點落入圓圈,它們將被保留,否則它們將被刪除。這讓人想起了尋找圓周率的蒙特卡羅方法。然而,這種方法往往留下許多點以外的圓,計算效率低下。

有人則用圓公式x^2+y^2=R^2來解,會先隨機生成0到圓半徑間的x,再用來計算出y。然而,這是錯的,由於x^2的關係,x影響力會變大,從而令y範圍變小,形成了越接近圓周的點越密,越接近圓心的點越稀疏。

正確的方式應該是,隨機生成0到360度間的θ,以及0到1間的n,求得r =sqrt(n)*R,再用x=r*cos(θ)、y=r*sin(θ)求座標。關於這些計算,我們可以在線上數學百科全書MathWorld的〈Disk Point Picking〉條目中,找到相關的說明。

地球上最接近完美的球

既然沒有完美的圓,就不可能有完美的球體,難道不是地球本身嗎?不!兩極和赤道之間的半徑相距數十公里,地球上最接近完美球體的東西是一個五年制的高純度矽球,由一個科學家財團製造,每個價值約一百萬歐元,第一個矽球目前在德國,臺灣在2018年買了第二個。這個高純度的矽球,如果放大到地球的高度,相當於兩極和赤道半徑之間的半徑,將差距縮小到10米以下,相對接近完美。

中二數學

面對球,有許多不同的概念,從直覺。

例如,在平面幾何中,兩點之間的最短距離是一條直線,而在球面幾何中,兩點之間的最短距離不是一條直線,而是一條弧,其特殊名稱是測地線。同時,在平面幾何中,夾角定義為兩條直線之間的角度,三角形的三個角度之和為180度,而球體上三角形的夾角為兩個大圓的圓弧,內角之和大於180度。

如何在電腦繪圖中建立球的三維模型?有很多方法。最簡單的方法是在三維空間中繞軸旋轉平面上的圓。每次旋轉後的圓將形成經度部分,旋轉圓上的一個點後連接點將形成緯度部分。

因為沒有完美的圓,這種方式構成的圓,其實也就是一個多面體罷了,而且,極點附近的點會比赤道地區附近的點密集,然而,好處是,面的頂點索引結構非常簡單容易構造,而且要對球面貼圖時,可以很容易地對應至圖片來源座標,貼圖來源座標通常用u、v代表,因此,這種球又稱為UV球(UV sphere),最常見於CAD建模軟體之中。

球體的表面不能平鋪,橘皮只能平鋪,相反,平面圖到球只能平鋪,而球到平面,自古以來就是這樣做的,結果仍然是各種各樣的地圖投影。

例如,常見的平面地圖多半採用麥卡托投影法,它在中國赤道地區附近的面積看來會變小,兩極看來會變大,舉例來說,地圖上非洲的面積看來還好,然而,實際上卻是超大,就連印度、美國、歐洲、中國加起來,都沒非洲大。

方才談到在圓中均勻地散佈點,並不是單純地隨機取r、θ,類似地,想在球上均勻地散佈點,也不是單純地隨機取r、θ、φ,然後用球座標公式來計算,這會造成兩極密集而赤道地區稀疏的情況。

如果你想在圓上均勻地取點,我們可以在線上數學百科全書Mathworld的“球體點拾取”條目中找到相關說明;另外,請注意!物理和數學球座標,θ、φ不同的定義!

柏拉圖多面體只有五個

球面上散亂點的問題是點的密度是均勻的,兩邊沒有過密或過密的問題,但只有5個 n,分別是4,6,8,12和20。

換言之,只有柏拉圖多面體的頂點才有可能如此,因它們的頂點位於外接球,也因為是正多面體,球面相鄰的頂點間等距,而柏拉圖多面體只有五個。

這個問題的下一個最好的解決辦法是在球面上有盡可能多的等距或近距離的相鄰點。此外,這個問題是迄今為止許多論文的主題,主要是基於球形螺旋線,費舍爾球,球形螺旋線,以及點拾取和分佈在圓盤和球體上,正如前一篇專欄文章所討論的,“螺旋線的美麗和使用。”都與理解的方向有關。

由於可以使球體的n個點之間的距離盡可能相等或接近,如果將這些頂點連接成三角形面,在視覺效果上似乎每個三角形都會接近一個正三角形,所以計算面指數比較麻煩。但是,因為這些頂點會形成一個凸多面體,所以我們可以利用三維赫爾演算來獲得每個三角面的索引。

另一種方式是取柏拉圖正二十面體,因為它每個面就是一個三角形,可以對每個面細分出四個三角形,再將各三角形的頂點投影至球面,若細分三角結構面的次數越多,就會更接近實現完美的球,由於過程中被細分出來的面都是通過三角形,要建立學習三角形進行索引相對就簡單多了,視覺效果研究大致上也像是正三角形。

因為是二十面體,這種球叫做等球面。一些CAD建模軟體(如blender)將提供該球體,以進一步使用頂點進行建模,但在映射時它比UV球體更麻煩。感興趣的人可以參考“球面的n種繪畫方法”。

事實上,柏拉圖的其他多面體,也可以以同樣的方式被細分並投影到一個球體上,由此產生的多面體,被稱為測地多面體,可以通過用更少的面來近似這個球體,來創造一種不同的視覺效果。

從圓與球中學數學

對圓和球的需求有很多,然而現實中能找到的相關資訊相對較少,可能是因為畫圓或球只是很多人的簡單需求,或者即使實現方式不對,也勉強能滿足需求!

有機會的話,你可以試著認識一些從圓或球延伸出來的需求,這時,可藉由進行以上研究提及的資源或關鍵字出發,從圓與球中認識一些數學上要考量的要素。記得,圓與球有時並不如直覺中那麼的單純。

相關文章