Matlab绘图基础——其他三维图形(绘制填充的五角星)

 

其他三维图形

 

 

%绘制魔方阵的三维条形图
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',''
 
posted @ 2018-03-21 15:13  司徒鲜生  阅读(4899)  评论(0编辑  收藏  举报