您當前的位置:首頁 > 攝影

球面上的“均勻”分佈

作者:由 派大西 發表于 攝影時間:2022-05-01

首先,如何定義這個題目中的“均布”,理解為“evenly distributed”,也就是儘可能儘可能減少跟“uniform distribution”的discrepancy。寫得更加準確一點就是:

D\left(X_{N}\right):=\sup _{\mathbf{y} \in \mathbb{S}^{2}, \atop \varphi \in[0, \pi]}\left|\frac{1}{N} \sum_{j=1}^{N} \mathbb{1}_{C(\mathbf{y}, \varphi)}\left(\mathbf{x}_{j}\right)-\sigma_{d}(C(\mathbf{y}, \varphi))\right| \\

其中

\varphi

球面兩點的夾角(等價於測地距離),

C(y,\varphi)

是球面上以

y

為中心,

\varphi

為最大夾角的圓覆蓋區域,

\sigma_d

表示球面上某個區域的測度(面積)。

如何在球體上均勻分佈點的問題由來已久,在數學、物理、化學和計算的許多領域都具有巨大的意義,包括但不僅限於數值分析、逼近論、晶體學、病毒形態、靜電、編碼理論和計算機圖形學,所以從各種角度研究這個問題的方法都有。除了少數情況外(比如等價於正多面體頂點的情形),這個問題仍沒有完全解決。因此,一般只能求得近似解決方案。

下面介紹兩種方法:

最小勢能法

其中一種方法是將散點想象為同種電荷的相同粒子,分佈在球面上,使得總勢能最小,也就是尋找一組

m

個點:

x_i\in X\subset S^2=\left\{x\in\mathbb{R}^3|\|x\|_2=1\right\} \\

使得最小化

P(X)=\sum_{i\neq j} \frac{1}{x_i-x_j} \\

不難知道上式是可以取到最小值的,但上面的函式有非常多的區域性極小值。如何選取到最小值就是典型的流形上的光滑最佳化問題,需要透過最佳化數值求解,參考彙總的結果

對於49個點,其中一個近似解如下(北極方向的正交投影):

球面上的“均勻”分佈

再多一些點也有近似解,比如2500個點,北極的正交投影就是:

球面上的“均勻”分佈

斐波那契格點構造法

另一種比較“美觀”的做法是構造斐波那契網格,本質是上

[0,1)\times[0,1)

區域上的斐波那契網格經過保面積變換投影到球面上的樣子(Lambert azimuthal equal-area projection)

首先是

[0,1)\times[0,1)

上的斐波那契網格,也就是

def

gen_fib_lattice

N

):

phi

=

1

+

np

sqrt

5

))

/

2

x

=

np

arange

1

N

+

1

/

phi

%

1

y

=

np

arange

1

N

+

1

/

N

return

x

y

看起來就是:

球面上的“均勻”分佈

斐波那契格點在平面上有均勻分佈的特性,然後透過保面積變換,將其變到圓上:

def area_preserve_rec2circ(x, y):

theta = 2 * np。pi * x

r = np。sqrt(y)

return theta, r

看起來就是

球面上的“均勻”分佈

最後還是透過保面積變換,將平面上的圓變換到球面,也就是前面提到的Lambert azimuthal equal-area projection

def area_preserve_circ2sphere(theta, r):

phi = 2 * np。arcsin(r) # latitude

x = np。cos(theta) * np。sin(phi)

y = np。sin(theta) * np。sin(phi)

z = np。cos(phi)

return x, y, z

對於N=49,長得是這個樣子:

球面上的“均勻”分佈

也可以求任意給定點數的排布,比如N=2500,看起來比最小能量的結果更加詭異一點:

球面上的“均勻”分佈

總結

這次介紹了逼近球面上“evenly distributed”均勻布點的兩種方法,一種是計算勢能,類似光滑曲面上的帶電粒子排布,另一種是平面的某種均布(斐波那契格點)透過兩步保積變換投影到球面上。 當然還有一些基於距離的做法。不管怎樣,所謂球面上均布的網格、插值、積分以及各種數值方法有非常緊密聯絡,非常重要就是了~ @派大西

參考連結:

How to evenly distribute points on a sphere more effectively than the canonical Fibonacci Lattice

Distributing many points on spheres: minimal energy and designs

https://

stackoverflow。com/quest

ions/9600801/evenly-distributing-n-points-on-a-sphere

標簽: np  球面  斐波  phi  Theta