利用Matlab生成一个网格化的三维球面(生成直角坐标)

时间:2022-11-05 00:13:58

利用Matlab生成一个网格化的三维球面,分别对径向方向、经度方向和纬度方向进行网格化,代码如下:

%生成一个笛卡尔坐标系下球面网格的x,y,z坐标
%r为球面距离
%nJingdu,nWeidu分别为经度方向和纬度方向上的离散度,为正整数
r = 1600;
nJingdu = 80;
nWeidu = 40;
jingdu = linspace(0,2*pi,nJingdu+1);
weidu = linspace(-pi/2,pi/2,nWeidu);
XYZ = zeros(nJingdu*nWeidu,3);
k = 1;
for i = 1:nJingdu
    for j = 1:nWeidu
        XYZ(k,1:3) = [r*cos(weidu(j))*cos(jingdu(i)) r*cos(weidu(j))*sin(jingdu(i)) r*sin(weidu(j))];
        k = k+1;
    end
end
plot3(XYZ(:,1),XYZ(:,2),XYZ(:,3),'.');
axis equal;
save xyz.txt XYZ -ascii -double

  

最后保存为一个数组文件xyz.txt