今天想用球面来模拟一个数据,就想到了用matlab来画图。但是刚开始不会啊,就询问别人,别人说也没怎么用过,就去百度搜索啦,结果还真搜到一个画整个球的小段code,是这样的:
给定球心和直径,画出一个球。
x0=4/3;y0=4/3;z0=0;%球心
r=sqrt(41)/3;%半径
%下面开始画
[x,y,z]=sphere;
mesh(r*x+x0,r*y+y0,r*z+z0)
axis equal
在这里用到了me sh函数,不知道mesh函数是怎么个意思,大致是画一个网格状的吧,再百度之吧:一句话:
mesh(x,y,z):以z矩阵列、行下标为x,y轴自变量,画网线图.
仅仅画出球并不是我想要的,我只是想给定x,y,画出Z的平面图,用球面来模拟一个凹的面。在同学的提示下,最后终于成功绘制:code是这样写的~
x=0:0.1:3;//x坐标 x=[0,3]
y=x;
z=zeros(31,31);//对于每个(x,y)pair,都会有个z的值,这个值是通过公式计算出来的啦。
for i=1:1:31
for j=1:1:31
z(i,j)=19/2-sqrt(361/4-(x(i)-3).^2-(y(j)-3).^2);(给定直径和球心的球)
end
end
surf(x,y,z);//根据x,y,z画出平面
最后的图是这样的~~: