function [t_gear]=gear_transition_time(G,curr_gear,new_gear)
%GEAR_TRANSITION_TIME Calcula o tempo de transição da mudança com base na
%                     matriz de tempos, e nas mudanças actual e pedida.
%##########################################################################
% Esta função simples calcula o tempo de transição de uma determinada
% passagem de mudança com base na matriz de tempos de passagem, definidos
% pelo utilizador, e nas mudanças actual e pedida. Caso a mudança não
% esteja a variar, este valor é tido como zero, para que a função execute
% na mesma.
%
% INPUTS:
% G -> Matriz de tempos de passagem de mudança;
% curr_gear -> Mudança actual do veículo;
% new_gear -> Mudança pedida pelo sistema;
%
% OUTPUTS:
% t_gear -> Tempo que leva a passagem a ser executada;
%##########################################################################
% Transição Marcha-atrás -> Ponto Morto:
if(((fix(curr_gear)==-1)&&(new_gear==0))||((fix(curr_gear)==0)&&(new_gear==-1)))
    t_gear=G(1,1);
% Transição Ponto Morto -> Primeira:
elseif(((fix(curr_gear)==0)&&(new_gear==1))||((fix(curr_gear)==1)&&(new_gear==0)))
    t_gear=G(2,1);
% Transição Primeira -> Segunda:
elseif(((curr_gear>=1)&&(new_gear==2))||((curr_gear<=2)&&(new_gear==1)))
    t_gear=G(3,1);
% Transição Segunda -> Terceira:
elseif(((curr_gear>=2)&&(new_gear==3))||((curr_gear<=3)&&(new_gear==2)))
    t_gear=G(4,1);
% Transição Terceira -> Quarta:
elseif(((curr_gear>=3)&&(new_gear==4))||((curr_gear<=4)&&(new_gear==3)))
    t_gear=G(5,1);
% Transição Quarta -> Quinta:
elseif(((curr_gear>=4)&&(new_gear==5))||((curr_gear<=5)&&(new_gear==4)))
    t_gear=G(6,1);
% Caso contrário o tempo é zero, por defeito:
else
    % Valor por defeito:
    t_gear=0;
end
end