请问在matlab中如何用直角坐标绘出八分之一球面,如何找寻三个方向的等高线?谢谢

 我来答
百度网友1a3db47cb
2011-03-05
知道答主
回答量:13
采纳率:0%
帮助的人:13.3万
展开全部
ththeta=0:0.1:(pi/2);phi=0:0.1:(pi/2);
n=max(size(theta));
for i=1:n
for j=1:n
x(i,j)=cos(theta(j))*sin(phi(i));
y(i,j)=sin(theta(j))*sin(phi(i));
z(i,j)=(1-x(i,j).^2-y(i,j).^2).^0.5;
end
end
figure;surface(x,y,z);
view(60,30)
xlabel('x');ylabel('y');zlabel('z');
axis equal

%z方向等高线
figure;contour3(x,y,z,30);
view(60,30)
xlabel('x');ylabel('y');zlabel('z');
axis equal

%x方向等高线
figure;surface(y,z,x);
contour3(y,z,x,30);
xlabel('y');ylabel('z');zlabel('x');
axis equal
%y方向等高线
figure;surface(z,x,y);
contour3(z,x,y,30);
xlabel('z');ylabel('x');zlabel('y');
axis equal
追问
非常感谢你的回答,再请问下再编程画八分之一球面时能不能不用极坐标的方法,用直角坐标行吗?就是说编写直角坐标下的球面方程,谢谢
追答
warning off;
for i=1:101
for j=1:101
x(i,j)=(i-1)./100;
y(i,j)=(j-1)./100;
z(i,j)=(1-x(i,j).^2-y(i,j).^2).^0.5;
z(i,j)=abs(z(i,j))*(isreal(z(i,j)))/(isreal(z(i,j)));
end
end

figure;h=surface(x,y,z);
set(h,'edgecolor','none');
view(60,30)
xlabel('x');ylabel('y');zlabel('z');
axis equal

%z方向等高线
figure;contour3(x,y,z,30);
view(60,30)
xlabel('x');ylabel('y');zlabel('z');
axis equal
%x方向等高线
figure;surface(y,z,x);
contour3(y,z,x,30);
xlabel('y');ylabel('z');zlabel('x');
axis equal
%y方向等高线
figure;surface(z,x,y);
contour3(z,x,y,30);
xlabel('z');ylabel('x');zlabel('y');
axis equal
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式