matlab有自带的quiver,然而我电脑上画出来的箭头长度不对,于是自己写了一个。
角度和比例可以根据需要修改。
Example:
arrow([-1 0], [11 0], 'k', 2)
arrow([0 1], [0 -11], 'k', 2)
function arrow(S, N, color, LineWidth)
% 画一个以 S(2*1) 为起点的向量 N(2*1)
if size(S, 1) == 1, S = rot90(S, -1); end;
if size(N, 1) == 1, N = rot90(N, -1); end;
% 箭头的夹角
angle = 20 / 180 * pi;
% 箭头长度占总长度的比例
ratio = 0.08;
R = [cos(angle),-sin(angle); sin(angle),cos(angle)];
N1 = ratio * (-N); N2 = N1;
N1 = R * N1;
N2 = R \ N2;
E = S + N;
plot([S(1) E(1)], [S(2) E(2)], 'color', color, 'LineWidth', LineWidth); hold on;
plot([E(1) E(1)+N1(1)], [E(2) E(2)+N1(2)], 'color', color, 'LineWidth', LineWidth);
plot([E(1) E(1)+N2(1)], [E(2) E(2)+N2(2)], 'color', color, 'LineWidth', LineWidth);