over 4 years ago

之前就有想過要用解析解求一個均勻的圓球的質量投影,但是推半天沒推出來,只好先用MATLAB做出一個3D的volume,再用 sum(V,3)來求投影質量。我知道這樣超白癡的,而且要是球稍微大一點,電腦就記憶體不足當掉給你看了。

剛才突然... 就夢到正確的解析解做法了......

原理

已知圓球球面的公式是\

其中 為一常數,是球面的半徑。

現在我們將其推廣,把球面推廣成球體,則參數 要滿足

其中

所以要快速求出一個球體的質量投影,只要移項還有乘以2就好了,得到:

不過記得要把超出 support 的地方手動設為零,不然可是會出現 complex 的。請直接參考下面的實作程式碼。

MATLAB 實作

sphere_proj.m
function Z = sphere_proj(DIA)

RAD = DIA/2; % radius

x = linspace(-RAD, RAD, DIA);
[X, Y] = meshgrid(x, x);
R = sqrt( X.^2 + Y.^2);
Z = 2 * sqrt( RAD^2 - R.^2 );
Z( R > RAD) = 0;
← 解決jspr資料庫損毀的問題 Ingress 新手常見問題 →
 
comments powered by Disqus