function E=calcula_campo(P0,Dg,k0,r,s2,D,tipo,int_trans,camino,polarizacion)
%Función que calcula el campo eléctrico para los casos definidos por el
%usuario mediante el parámetro intersecciones. El parametro int_trans
%indica el numero de intersecciones de transmisión, que son las ultimas
% tipo: 0(libre),1(los),2(refl)
%global TRAYECTORIAS INTERSECCIONES DIFRACTORES;
switch(tipo)
    case(0) %LoS
        E=(sqrt(30*P0*Dg)*exp(-i*k0*r))/r;
    case(1) %Directo
        E0=(sqrt(30*P0*Dg)*exp(-i*k0*r))/r;
        ctt=transmision_total(int_trans,polarizacion);
        E=E0*ctt;
    case(2) %Reflexiones
        E0=(sqrt(30*P0*Dg)*exp(-i*k0*r))/r;
        ctt=transmision_total(int_trans,polarizacion);
        crt=reflexion_total(camino,polarizacion);
        E=E0*ctt*crt;
        if(s2~=0) %Reflexiones con difracción (s2 camino entre difractor y rx)
            A=1/sqrt(s2);
            E=E*D*A*exp(i*k0*s2);
        end
    case(3) %Difracciones
        if(length(D)>1) %Difracción doble
            s1_aux=r(1);
            s2_aux=s2(1);
            D_aux=D(1);
            E0=(sqrt(30*P0*Dg)*exp(-i*k0*s1_aux))/s1_aux; %perdidas en espacio libre
            A=1/sqrt(s2_aux);
            EQd=E0*D_aux*A*exp(i*k0*s2_aux);
            s2_aux=s2(2);
            D_aux=D(2);
            A=1/sqrt(s2_aux);
            ctt=transmision_total(int_trans,polarizacion);
            E=EQd*D_aux*A*exp(i*k0*s2_aux)*ctt; %perdidas en espacio libre
        else %Difracción simple
            E0=(sqrt(30*P0*Dg)*exp(-i*k0*r))/r; %perdidas en espacio libre
            A=1/sqrt(s2);
            %coeficiente de transmision total de la trayectoria directa de
            %difraccion
            ctt=transmision_total(int_trans,polarizacion);
            E=E0*D*A*exp(i*k0*s2)*ctt;
        end
end