1. 程式人生 > >[ZZ] 用matlab繪制箭頭

[ZZ] 用matlab繪制箭頭

mage tex 單個 right radi 比較 blog images ont

用matlab繪制箭頭

http://npfeng900.blog.163.com/blog/static/14456108201221922944998/

用matlab繪制箭頭1

用matlab繪制箭頭

1. quiver 和quiver3命令

這兩個命令適合畫關於“場”中向量的圖,不適合於畫單個剪頭,而且放大之後,剪頭不是很好看

[X,Y] = meshgrid(-2:.2:2);

Z = X.*exp(-0.5.*X.^2 - Y.^2);

[DX,DY] = gradient(Z,.2,.2);

contour(X,Y,Z)

hold on

quiver(X,Y,DX,DY)

colormap hsv

hold off

技術分享

2. text命令中的\leftarrow和\rightarrow.可用於對圖形的標註,但作用僅限於此,不好控制。例:

plot(0:pi/20:2*pi,sin(0:pi/20:2*pi))

text(pi,0,‘ \leftarrow sin(\pi)‘,‘FontSize‘,18)

技術分享

3.Annotation,可繪出比較漂亮的箭頭,但似乎只能畫出二維的箭頭,向量長度小於1,並且隨對圖形放大和平移時剪頭不會相應地變化。例如

figure; hold on; axis equal;

annotation(‘textarrow‘,[0.2 0.3],[0.5 0.6]);

annotation(‘doublearrow‘,[0.5 0.3],[0.2 0.6]);

技術分享

網上的一些代碼,可畫出漂亮的剪頭(annotation(‘arrow‘,[0.2 0.8],[0.1 0.1],‘LineStyle‘,‘-‘,‘color‘,[1 0 0]);
annotation(‘arrow‘,[0.2 0.8],[0.3 0.3],‘LineStyle‘,‘-‘,‘color‘,[1 0 0],‘HeadStyle‘,‘plain‘);
annotation(‘arrow‘,[0.2 0.8],[0.5 0.5],‘LineStyle‘,‘-‘,‘color‘,[1 0 0],‘HeadStyle‘,‘cback3‘);

annotation(‘doublearrow‘,[0.2 0.8],[0.7 0.7],‘LineStyle‘,‘-‘,‘color‘,[1 0 0],‘HeadStyle‘,‘cback3‘); )

4.若要繪制三維剪頭且對圖形放大和旋轉時剪頭也隨之變化,可自己編程解決。例:

P1 = [0,0,0]; P2 = [0,0,2];

figure; hold on; axis equal;

for k = 1:13

x(k)=0.05*cos(pi/180*k*30);

y(k)=0.05*sin(pi/180*k*30);

z(k)=1.8;

plot3([P2(1),x(k)],[P2(2),y(k)],[P2(3),z(k)])

end

plot3([P1(1),P2(1)],[P1(2),P2(2)],[P1(3),P2(3)]);

plot3(x,y,z);

本例只繪出了一個方向的箭頭,若要繪任意向量的剪頭,可采用類似的思路,本例僅供參考

技術分享

[ZZ] 用matlab繪制箭頭