0

球坐标为 (r, theta, phi)。分布如下。

在此处输入图像描述

在此处输入图像描述

为了生成位置,我使用了逆变换采样,并且为了绘图,我将它们转换为 (X, Y, Z) 坐标。我期待看到散布在空心球体上的点,但奇怪的事情正在发生。我不知道是什么问题。这是 Matlab 代码

K=200; 
u=rand([1 K]);
phi_array=2*pi.*u;          
theta_array=acos(1-2.*u);

R_M=160;
R_m=10;
r_k= (R_m^3+(R_M^3-R_m^3).*u).^(1/3);
X=r_k .* cos(phi_array) .* sin(theta_array);
Y=r_k .* sin(phi_array) .* sin(theta_array);
Z=r_k .* cos(theta_array);
scatter3(X,Y,Z);

这是这个文件的情节 在此处输入图像描述

你能帮我指出我的代码有什么问题吗?从理论上讲,我知道没有任何问题,但不知道是什么导致了错误。我知道还有其他方法可以生成这些位置,但我很想知道我的代码中有什么问题。

4

0 回答 0