在matlab 画箭头

非常实用的文章
原文地址:在matlab 画箭头 作者:纯情小郎君
完整见链接http://www.mathworks.com/matlabcentral/fx_files/14056/1/content/arrow3_examples.html

ARROW3   EXAMPLES   (R13)
Two-Dimensional Quiver Plots
Example 1. (cf. Joukowski Airfoil Transformation)

t=10*pi/180; u=0.1; v=0.1; r=1.1; tol=8e-2;
s=u+i*v; k=2*r*sin(t); w=exp(i*t);
[x,y]=meshgrid(-2.5:0.1:3.5,-3:0.1:3);
z=x+i*y; z(abs(z-s)<r-tol)=NaN;
f=w*z+exp(-i*t)*r^2./(z-s)+i*k*log(z);
a=0:0.1:2*pi; zc=r*(cos(a)+i*sin(a))+s;
c1=-1.5; c2=2.5; c3=c2-c1;
c=contour(x,y,imag(f),c1:c3/16:c2);
set(gca,'color',0.5*[1 1 1])
hold on, daspect([1 1 1])
fill(real(zc),imag(zc),'y'), colorbar
map=get(gcf,'colormap');
domain=0:1/(size(map,1)-1):1; m=1;
while m<length(c), n=m+c(2,m);
if c(2,m)>9, p=c(:,m+1:n)';
    if p(end,1)>p(1,1), p=flipud(p); end
    ndx=10:10:length(p);
    p2=p(ndx,:); p1=p(ndx-3,:);
    cc=interp1(domain,map,(c(1,m)-c1)/c3);
    set(gca,'ColorOrder',cc)
    arrow3(p1,p2,'0o',0.8)
end, m=n+1;
end, hold off

Example 1. Joukowski Airfoil Transformation
Example 1.

Example 2. (cf. Quiver)

[x,y]=meshgrid(-1:1/21:1);
z=x.*exp(-x.^2-y.^2);
[c,h]=contour(x,y,z);
set(h,'EdgeColor',0.45*[1 1 1])
ndx=1:3:length(x);
x=x(ndx,ndx); y=y(ndx,ndx); z=z(ndx,ndx);
[u,v]=gradient(z,1/7);
p1=[x(:),y(:)]; u=u(:); v=v(:);
m=abs(u+i*v); % gradient magnitude
daspect([1 1 1]), set(gca,'color',0.3*[1 1 1])
hold on, colormap hot, scale=0.4;
arrow3(p1,p1+scale*[u,v],'|',min(1.25*m,0.85))
hold off, h=colorbar;
set(h,'YTickLabel',num2str(str2num(get(h,...
'YTickLabel'))/scale))

Example 2. Surface Gradients
Example 2.

Example 3. (cf. Two-Dimensional Quiver Plots)

[x,y,z]=peaks(-2:0.05:2);
contour(x,y,z,10); h=gca;
ndx=1:4:length(x);
x=x(ndx,ndx); y=y(ndx,ndx); z=z(ndx,ndx);
[u,v]=gradient(z,0.2);
p1=[x(:),y(:)]; u=u(:); v=v(:);
m=abs(u+i*v); % gradient magnitude
hold on, daspect([1 1 1]), scale=0.025;
arrow3(p1,p1+scale*[u,v],'|',0.9*m/max(m))
hold off, title('Dual Colormap')
h1=colorbar; h2=copyobj(h1,gcf);
set(h,'color',0.4*[1 1 1],...
'position',get(h,'position')+[0.05 0 0 0])
% ----------------------------------------------------- Right Colorbar
p=get(h1,'position');
set(h1,'position',[0.87,p(2),0.05,p(4)],...
'YTickLabel',num2str(str2num(get(h1,...
'YTickLabel'))/scale))                               % freeze labels
map=colormap; cdata=reshape(map,size(map,1),1,3);
set(get(h1,'children'),'cdata',cdata)              % freeze colors
set(get(h1,'title'),'string','Gradient')
% ------------------------------------------------------ Left Colorbar
caxis auto, colorbar, colormap autumn
set(h2,'YAxisLocation','left',...
'position',[0.08,p(2),0.05,p(4)])
set(get(h2,'title'),'string','Contour')

Example 3. Dual Colormap
Example 3.
Three-Dimensional Quiver Plots
Example 4. (cf. Quiver3)

[x,y]=meshgrid(-2:0.25:2,-1:0.25:1);
z=x.*exp(-x.^2-y.^2);
surf(x,y,z,'EdgeColor','none')
axis([-2.5 2.5 -1.5 1.5 -1 1]), daspect([1 1 1])
set(gca,'CameraViewAngle',7)
[u,v,w]=surfnorm(x,y,z);
p1=[x(:),y(:),z(:)]; N=[u(:),v(:),w(:)];
hold on
arrow3(p1,p1+0.5*N,'1.5_b')
hold off, colormap spring
light('position',[-1 -1 -1],'style','local')
light('position',[0 1 1]), lighting gouraud

Example 4. Surface Normals
Example 4.

Example 5. (cf. Three-Dimensional Quiver Plots)

vx=2; vy=3; vz=10; a=-32; t=(0:.1:1)';
x=vx*t; y=vy*t; z=vz*t+1/2*a*t.^2;
r=[x,y,z]; v=gradient(r')';
axis([0 3 0 4 -10 2]), pbaspect([2 1 1])
hold on, grid on, view([70 18])
arrow3(r,r+v,'b',0.9)
hold off

Example 5. Velocity Vectors
Example 5.

Cone Plots
Example 6. (cf. Coneplot)

load wind, wind_speed=sqrt(u.^2+v.^2+w.^2);
xmin=min(x(:)); xmax=max(x(:));
ymin=min(y(:)); ymax=max(y(:));
zmin=min(z(:));
hsurfaces=slice(x,y,z,wind_speed,[xmin,xmax],ymax,zmin);
set(hsurfaces,'FaceColor','interp','EdgeColor','none',...
              'AmbientStrength',0.6)
hold on, daspect([2,2,1]), view(30,40), axis tight
xrange=linspace(xmin,xmax,8);
yrange=linspace(ymin,ymax,8);
[cx cy cz]=meshgrid(xrange,yrange,3:4:15);
ui=interp3(x,y,z,u,cx,cy,cz);
vi=interp3(x,y,z,v,cx,cy,cz);
wi=interp3(x,y,z,w,cx,cy,cz);
m=sqrt(ui.^2+vi.^2+wi.^2); m=m(:)/30;
p1=[cx(:),cy(:),cz(:)]; p2=[ui(:),vi(:),wi(:)];
hcones=arrow3(p1,p2,'r',m,3*m,'cone');
set(hcones,'DiffuseStrength',0.8)
hold off, axis off
camproj perspective, camzoom(1.2)
camlight right, lighting phong

Example 6. Wind Speed and Direction
Example 6.

Example 7. (cf. Vector Field Displayed with Cone Plots)

load wind, wind_speed=sqrt(u.^2+v.^2+w.^2);
hiso=patch(isosurface(x,y,z,wind_speed,40),...
          'FaceColor','red','EdgeColor','none');
isonormals(x,y,z,wind_speed,hiso)
hcap=patch(isocaps(x,y,z,wind_speed,40),...
          'FaceColor','interp','EdgeColor','none',...
          'AmbientStrength',0.6);
hold on, colormap hsv, daspect([1,1,1]), view(65,45)
[f verts]=reducepatch(isosurface(x,y,z,wind_speed,30),0.07);
cx=verts(:,1); cy=verts(:,2); cz=verts(:,3);
ui=interp3(x,y,z,u,cx,cy,cz);
vi=interp3(x,y,z,v,cx,cy,cz);
wi=interp3(x,y,z,w,cx,cy,cz);
m=sqrt(ui.^2+vi.^2+wi.^2); m=m(:)/40;
p1=[cx(:),cy(:),cz(:)]; p2=[ui(:),vi(:),wi(:)];
h1=arrow3(p1,p2,'b',m,3*m,'cone');
xrange=linspace(min(x(:)),max(x(:)),10);
yrange=linspace(min(y(:)),max(y(:)),10);
[cx,cy,cz]=meshgrid(xrange,yrange,3:4:15);
ui=interp3(x,y,z,u,cx,cy,cz);
vi=interp3(x,y,z,v,cx,cy,cz);
wi=interp3(x,y,z,w,cx,cy,cz);
m=sqrt(ui.^2 + vi.^2 + wi.^2); m=m(:)/50;
p1=[cx(:),cy(:),cz(:)]; p2=[ui(:),vi(:),wi(:)];
h2=arrow3(p1,p2,'g',m,3*m,'cone');
hold off, axis tight, box on
set(gca,'xtick',[],'ytick',[],'ztick',[])
camproj perspective, camzoom(1.2)
camlight(-45,45), lighting phong

Example 7. Wind Speed and Direction
Example 7.


Feather Plots
Example 8. (cf. Feather)

theta=(-90:10:90)'*pi/180;
n=length(theta); p1=[1:n;zeros(1,n)]';
r=2*ones(n,1); [u,v]=pol2cart(theta,r);
plot([1 n],[0 0],'r')
axis([0 20 -2 2]), daspect([8 2 1])
hold on, grid on
arrow3(p1,p1+[u,v],'r',0.9)
hold off

Example 8. Feather Plot
Example 8.

Example 9. (cf. Plotting Complex Numbers)

t=(0:0.5:10)'; s=0.05+i; Z=exp(-s*t);
n=length(Z); p1=[1:n;zeros(1,n)]';
plot([1 n],[0 0],'b')
axis([0 22 -1 1]), daspect([8 1 1])
hold on, grid on
arrow3(p1,p1+[real(Z),imag(Z)],'b',0.8)
hold off

Example 9. Complex Number Plot
Example 9.

Compass Plots
Example 10. (cf. Compass Plots)

wdir =[45 90 90 45 360 335 360 270 335 270 335 335];
knots=[ 6 6 8 6       9 10 14 12];
[x,y]=pol2cart(wdir*pi/180,knots);
polar(0,15), axis(15.9*[-1 1 -1 1])
hold on
arrow3(zeros(length(x),2),[x',y'],'r',1.25)
hold off

Example 10. Wind Speed and Direction
Example 10.

Example 11. (cf. Compass)

Z=eig(randn(20)); m=abs(Z);
R=ceil(max(m)); r=R+0.3;
polar(0,R), axis(r*[-1 1 -1 1])
hold on
arrow3(zeros(length(Z),2),[real(Z),imag(Z)],'b',1.75*m/R)
hold off

Example 11. Complex Number Plot
Example 11.

Reference Frames
Example 12. Coordinate Axes

p=[4 2 1]; axis([-6 6 0 5 -1 1])
pbaspect([2 1.5 1]), view(55,15)
hold on
arrow3(repmat([p(1:2),0],4,1),...
[0 p(2) 0;p(1) 0 0;p;0 0 0],'--o',0,0,0.5)
arrow3(zeros(3),diag([7,5,1]),'o')
arrow3([0 0 0],p,'2.5s',1.5,[],0)
hold off, axis off, camlight left
set(gca,'CameraViewAngle',4)
text(7.1,0,0,'X'), text(0,5.05,0,'Y')
text(0,0,1,'Z','VerticalAlignment','bottom',...
'HorizontalAlignment','center')

Example 12. Coordinate Axes
Example 12.
Example 13. Eigenvectors

n=500; % generate test data
newz=[ 1 1 1]/sqrt(3);
newy=[ 0 -1 1]/sqrt(2);
newx=cross(newy,newz);
R=[newx;newy;newz]; % rotation matrix
U=randn(n,3)*diag([1,2,3])*R;
u=U(:,1)+10; v=U(:,2)+20; w=U(:,3)+30;
% plot eigenvectors with mean origin
plot3(u,v,w,'r.')
axis([0 20 10 29 20 40]), daspect([1 1 1])
view([-70,15]), set(gca,'CameraViewAngle',8)
hold on, grid on
mu=repmat(mean([u,v,w]),3,1);
[V,D]=eig(cov([u,v,w]));
p=9*V'+mu;
arrow3(mu,p,[],1.25,[],0)
p=p+ones(3);
text(p(1,1),p(1,2),p(1,3),'bfU')
text(p(2,1),p(2,2),p(2,3),'bfV')
text(p(3,1),p(3,2),p(3,3),'bfW')
hold off

Example 13. Eigenvectors
Example 13.

Example 14. (cf. Frenet)

z=(0:2/99:2)'; t=2*pi*z; r=2+z;
x=r.*cos(t); y=r.*sin(t);
R=[x,y,z]; dR=gradient(R')';
m=repmat(sqrt(sum(dR.*dR,2)),1,3);
T=dR./m; dT=gradient(T')';
m=repmat(sqrt(sum(dT.*dT,2)),1,3);
N=dT./m; B=cross(T,N);
plot3(x,y,z,'color',0.5*[1 1 1])
axis([-4 4 -4 4 0 2.5])
hold on, grid on, pbaspect([1 1 1])
set(gca,'CameraViewAngle',7)
plot3(0,0,0,'r'), plot3(0,0,0,'color',[0 0.5 0])
plot3(0,0,0,'b')
legend('Curve','Tangent','Normal','Binormal',2)
ndx=1:4:length(x); R=R(ndx,:);
arrow3(R,R+1.4*T(ndx,:),'r',0.9)
arrow3(R,R+1.4*N(ndx,:),'e',0.9)
arrow3(R,R+0.4*B(ndx,:),'b',0.9)
hold off, view(-50,5)
set(gcf,'renderer','zbuffer')

Example 14. Frenet Frames
Example 14.
Named Colors
Example 15. Named Color Table

arrow3('colors',0.4) % 24 named colors with 44 adjustable shades

Example 15. Named Color Table
Example 15.


Color Equivalencies
ColorOrder            Arrow3
Simulink          Arrow3
Color1BlueLightBlueaZure
Color2EvergreenDarkGreenAsparagus
Color3RedOrangekumQuat
Color4Sky blueGrayLight gray
Color5Violet
Color6Pear
Color7Dark gray

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值