几何图形技术_Matlab高级绘图
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Matlab绘图系列之高级绘图
一、目录
1.彗星图
二维彗星图
三维彗星图
2.帧动画
3.程序动画
4.色图变换
5.V oronoi图和三角剖分
V oronoi图
三角剖分
6.四面体
7.彩带图
彩带图
三维流彩带图
8.伪彩图
9.切片图
切片图
切片轮廓线图
10.轮廓图
显示轮廓线
显示围裙
瀑布效果
带光照模式的阴影图
11.函数绘图
轮廓线、网格图、曲面图、轮廓网格图
轮廓曲面图、二维曲线、极坐标曲线图、自定义函数12.三维图形控制
视点
灯光效果
色彩控制
二、图形示例
1.彗星图
二维彗星图
t=0:.01:2*pi;
x=cos(2*t).*(cos(t).^2);
y=sin(2*t).*(sin(t).^2);
comet(x,y);
title('二维彗星轨迹图')
hold on
plot(x,y)
三维彗星图
a=12;
b=9;
T0=2*pi;%T0是轨道的周期
T=5*T0;
dt=pi/100;
t=[0:dt:T]';
f=sqrt(a^2-b^2);%地球与另一焦点的距离
th=12.5*pi/180;%未经轨道与x-y平面的倾角E=exp(-t/20);%轨道收缩率
x=E.*(a*cos(t)-f);
y=E.*(b*cos(th)*sin(t));
z=E.*(b*sin(th)*sin(t));
plot3(x,y,z,'g')%画全程轨线hold on,sphere(20);%画地球axis off
title('卫星返回地球示例')
x1=-18*T0;
x2=6*T0;
y1=-12*T0;
y2=12*T0;
z1=-6*T0;
z2=6*T0;
axis([x1 x2 y1 y2 z1 z2])
% axis([-15 10 -15 10 -10 10]) axis equal
comet3(x,y,z,0.02);%画运动轨线hold off
2.帧动画
Z=peaks;
surf(Z)%绘制网格表面图
axis tight
set(gca,'nextplot','replacechildren');%设定axis覆盖重画模式
title('帧动画播放示例')
for j=1:20
surf(sin(2*pi*j/20)*Z,Z)%重新绘制网格表面图,这里后面一个Z当成了颜色矩阵
F(j)=getframe;%创建帧
end
movie(F,20)%播放动画20次
3.程序动画
t=0:pi/50:10*pi
i=1;
h=plot3(sin(t(i)),cos(t(i)),t(i),'*','erasemode','none');%设定擦除模式grid on
axis([-2 2 -2 2 -1 10*pi])
title('程序动画示例')
for i=2:length(t)
set(h,'xdata',sin(t(i)),'ydata',cos(t(i)),'zdata',t(i));
drawnow
pause(0.01)
end
4.色图变换
load spine
image(X)
colormap cool
spinmap(10)
5.V oronoi图和三角剖分
V oronoi图
rand('state',5)
x=rand(1,10);
y=rand(1,10);
subplot(131)
voronoi(x,y);%绘制voronoi图形
axis equal
axis([-0.2 1.6 -0.5 2.5])
subplot(132)
[vx,vy]=voronoi(x,y);
plot(x,y,'r+',vx,vy,'b-');%应用返回值绘制axis equal
axis([-0.2 1.6 -0.5 2.5])
subplot(133)
rand('state',5);
x=rand(10,2);
[v,c]=voronoin(x);%返回值v参数维voronoi顶点矩阵,返回值c参数为voronoi元胞数组
for i=1:length(c)
if all(c{i}~=1)
patch(v(c{i},1),v(c{i},2),i);%应用色图i
end
end
axis equal
axis([-0.2 1.6 -0.5 2.5])
box on
三角剖分
[x,y]=meshgrid(1:15,1:15);
tri=delaunay(x,y);
z=peaks(15);
trimesh(tri,x,y,z)
6.四面体
d=[-1 1];
[x,y,z]=meshgrid(d,d,d);%定义一个立方体
x=[x(:);0];
y=[y(:);0];
z=[z(:);0];%[x,y,z]分别为加上中心的立方体顶点X=[x(:) y(:) z(:)];
Tes=delaunayn(X);%返回m×n的数组值tetramesh(Tes,X);%绘制四面体图
camorbit(20,0);%旋转摄像目标位置