% Visualizacao do Exercicio 3.1.1, pagina 157

function Exercicio311

close all

A = [0,-2]; % dados do exercicio
B = [1, 0];

AB = B - A; % vetor AB

ponto2D(A)      % marca no grafico o ponto A
ponto2D(B)      % marca no grafico o ponto B
vetor2D(AB,A)   % marca no grafico o vetor AB, com origem no ponto A
vetor2D(2*AB,A) % marca no grafico o vetor 2*AB (sua extremidade e' o ponto C)

end

%%%%%%%%%%%%%%% funcoes auxiliares

%%%%%%%%
function ponto2D(A)
%
% Representacao de um ponto A no  espaco R^2

hold on; plot(A(1),A(2),'ro'); hold off;

end

%%%%%%%%
function vetor2D(v,A)
%
% Representacao de um vetor v no espaco R^2
%
% vetor2D(v)   desenha o vetor partindo da origem
% vetor2D(v,A) desenha o vetor partindo do ponto A 

%QUIVER(X,Y,U,V) plots velocity vectors as arrows with components (u,v) at the points (x,y)
%QUIVER(U,V) plots velocity vectors at equally spaced points in the x-y plane.

if(nargin==1)
  x=0;y=0;
else
  x=A(1);y=A(2);
end

seta = 0.2*min(1,norm(v));
dphi = pi/12; 


phi = atan2(v(2),v(1));

hold on, axis auto
plot([x, x+v(1)],[y, y+v(2)],'b','linewidth',2);
plot(x+v(1)-seta*[cos(phi-dphi),0,cos(phi+dphi)], ...
     y+v(2)-seta*[sin(phi-dphi),0,sin(phi+dphi)]','b','linewidth',2);
hold off

% verifica se eixos estao estreitos

dx = diff(xlim); dy = diff(ylim); 
if(dx<=2*seta)
  xlim(mean(xlim) + [-0.5,0.5]*norm(v));
end
if(dy<=2*seta)
  ylim(mean(ylim) + [-0.5,0.5]*norm(v));
end

end
