% Funçao para animaçao de pendulos simples.
%
% pendulum_anim(xy,theta,t,L)
% xy    -> Coordenadas (x,y) do pendulo para os diversos instantes temporais.
% theta -> Valores de theta e Dtheta do pendulo para todos os instantes temporais.
% t     -> Espaço temporal.
% L     -> Dimensao da janela de animaçao.

function pendulum_anim(theta,t,L)

% === CINEMATICA DIRECTA =============================
% theta(:,1)=angulo
xy=[L*cos(theta(:,1)-pi/2), L*sin(theta(:,1)-pi/2)];
% ====================================================

for i=2:length(t)

    % === ANIMACAO GRAFICA =============================
    % Representacao do pendulo
    subplot(1,2,1);

    plot([0,xy(i,1)],[0,xy(i,2)],'linewidth',3);
    text(0,0,'X');
    text(xy(i,1),xy(i,2),'O');

    title('Simple Pendulum Simulation');
    xlabel('x');
    ylabel('y');
    axis(6/5*[-L,L,-L,L]);
    axis square

    % Apresentacao dos graficos de theta e Dtheta
    subplot(1,2,2);
    plot(t(1:i),theta(1:i,1),'b');              % Grafico de thetas
    hold on
    plot(t(1:i),theta(1:i,2),'y');              % Grafico de Dthetas (w)
    hold off
    axis([0,t(i)*1.1,-3.2,3.2]);
    title('theta/Dtheta VS time')
    ylabel('theta(blue)   Dtheta(yellow)')
    xlabel('time (sec)')
    grid on

    drawnow
    %==================================================
end