其他三维图形
%绘制魔方阵的三维条形图
subplot(2,2,1);
bar3(magic(4));
%以三维杆图形式绘制曲线y=2sin(x)
subplot(2,2,2);
y=2*sin(0:pi/10:2*pi);
stem3(y);
%已知x=[2347,1827,2043,3025],绘制饼图
subplot(2,2,3);
pie3([2347,1827,2043,3025]);
%用随机的顶点坐标值画出2个黄色三角形
subplot(2,2,4);
fill3(rand(3,2),rand(3,2),rand(3,2), 'y' );
%fill3函数等效于二维函数fill,可在三维空间内绘制出_填充多边形_
%格式:fill3(x,y,z,c)
应用示例:
例一:统计灰度图片的“灰度频率直方图”和“累计直方图”
A = imread('pout.tif') ; %读取一个内置图片
%%内置图片放在……MATLAB\R2010*\toolbox\images\imdata
A = A(:)';
count0=zeros(1,256); %设置矩阵大小
for x=1:length(A),count0(A(x)+1)=count0(A(x)+1)+1;end %各灰度级像素个数
P=count0/length(A); %频率
stem(P,'Marker','none'); axis tight; %作图显示 频率直方图
Hp=P;
for i=2:256,Hp(i)=P(i)+Hp(i-1);end %累计直方图
stem(Hp,'Marker','none'); axis tight; %作图显示
例二:绘制填充空间五角星
%%%方法一
t=1:2:11;
x = sin(0.4*t*pi); %五角星嘛! 六角星可以除以6
y = cos(0.4*t*pi);
z=0.5*x+0.3*y; %放置到三维空间中,这是该五角星所在的三维平面函数
fill3(x,y,z,'r')
xlabel('x');ylabel('y');zlabel('z');
haxes = gca; axis square;box on;
set(haxes,'xticklabel','','yticklabel','','zticklabel','') %移除原图坐标轴轴的标注
%注意fill是顺时针方向的,所以五角星闭合后,中间的五边形并没有填充%%地图多边形矢量化你懂得
hold on; %填充五边形
t=1:2:11;
x=cos(0.4*pi)/cos(0.2*pi)*sin(0.2*t*pi);
y=cos(0.4*pi)/cos(0.2*pi)*cos(0.2*t*pi);
z=0.5*x+0.3*y;
fill3(x,y,z,'r','EdgeColor','r'); %将五边形的边界颜色设置为红色
%%%显示五角星所在的边界 一个圆圈
t=1:0.1:11;
x = cos(0.4*t*pi);
y = sin(0.4*t*pi);
z=0.5*x+0.3*y;
plot3(x,y,z);hold off;
%%%方法二
i=1;
for ag=0.2*pi:0.2*pi:2.2*pi
if mod(i,2)==1 %i是奇数,长边,按照长边的计算公式
x(i) = sin(ag); %五角星嘛! 六角星可以除以6
y(i) = cos(ag);
else %i是偶数,短边,按照短边的计算公式
x(i)=cos(0.4*pi)/cos(0.2*pi)*sin(ag);
y(i)=cos(0.4*pi)/cos(0.2*pi)*cos(ag);
end
i=i+1;
end;clear i ag;
z=0.5*x+0.3*y;
fill3(x,y,z,'r','EdgeColor','r');
xlabel('x');ylabel('y');zlabel('z');
haxes = gca; axis square;box on;
set(haxes,'xticklabel','','yticklabel','','zticklabel','')