%% -- DEMO CÁLCULO DE RADIOAYUDAS AL ALCANCE

% La idea de la demostración es probar la utilidad de las funciones desarrolladas para ir filtrando la base de datos
% global de X-plane hasta reducirla al grupo de radioayudas situadas al alance de la aeronave.

% La rapidez de visualización puede cambiarse modificando los parámetros tr, ta y PLOT.
%% ------------------------------------------------------------------------------------------------------------
clear all; close all; clc

% Asumiendo la simplificacion de 'Tierra Plana' : 1 grado latitud  ~ 110 Km | 1 grado longitud ~ 111 Km     
latDeg2Km = 110;   lonDeg2Km = 111;          Km2LatDeg = 1/latDeg2Km;    Km2LonDeg = 1/lonDeg2Km; 
% Posición de la aeroanve:     Madrid                  
lat_a =  40.4722;     lon_a = -3.5608;    alt_a = 5000;     x0_LLA = [lat_a, lon_a, alt_a];     x_a = lat_a * latDeg2Km;    y_a = lon_a * lonDeg2Km;
% PLOT CON RADIOAYUDAS EN UN RADIO AMPLIO DE 1000 Km
R_A = 1500;
[NavAid_A] = Search_NavAid(x0_LLA, R_A, '3_12_13_Database_Lat_Sorted.dat', 'LatIndex_3_12_13.dat');
% Almacenamos los datos en distintos arrays:
[NAtypeA, NAlatA, NAlonA, NAaltA,  NAfreqA, NArangeA, NAidA] = Get_NavAid_Data(NavAid_A);       NA_A_x = NAlatA * latDeg2Km;        NA_A_y = NAlonA * lonDeg2Km;
% Plot de radioyudas AMPLIAS alrededor de la aeronave:
p_a = figure(); figure(p_a);
plot(x_a, y_a, '^red','LineWidth',5); hold on;
N_total_A = size(NAtypeA);
for i = 1: N_total_A        
        plot(NA_A_x(i), NA_A_y(i),     '^black','LineWidth',1);        hold on;  
end
% Circunferencia centrada en la aeronave y de radio R-A
a = linspace(0, 360, 250);          x_c_A = R_A*cosd(a) + x_a;     y_c_A = R_A*sind(a) + y_a;
plot(x_c_A, y_c_A, '--black', 'LineWidth',1);
xlabel('Eje Y: Latitud en Km (1º~ 110 Km)', 'FontSize',20);    ylabel('Eje X: Longitud en Km (1º~ 111 Km)', 'FontSize',20);     axis square


% PLOT CON RADIOAYUDAS SITUADAS EN UN RADIO CORTO DE 200 Km
R_C = 200;
[NavAid_C] = Search_NavAid(x0_LLA, R_C, '3_12_13_Database_Lat_Sorted.dat', 'LatIndex_3_12_13.dat');
% Almacenamos los datos en distintos arrays:
[NAtypeC, NAlatC, NAlonC, NAaltC,  NAfreqC, NArangeC, NAidC] = Get_NavAid_Data(NavAid_C);       NA_C_x = NAlatC * latDeg2Km;        NA_C_y = NAlonC * lonDeg2Km;
% Plot de radioyudas CORTAS alrededor de la aeronave:
N_total_C = size(NAtypeC);
for i = 1: N_total_C        
        plot(NA_C_x(i), NA_C_y(i),     '^green','LineWidth',1);        hold on;  
end
% Circunferencia centrada en la aeronave y de radio R-C
x_c_C = R_C*cosd(a) + x_a;     y_c_C = R_C*sind(a) + y_a;
plot(x_c_C, y_c_C, '--green', 'LineWidth',1);
xlabel('Eje Y: Latitud en Km (1º~ 110 Km)', 'FontSize',20);    ylabel('Eje X: Longitud en Km (1º~ 111 Km)', 'FontSize',20);     axis square

% Cambio de ejes
view(-90,90) 
set(gca,'ydir','reverse');


% FIGURA 2:
p_c = figure(); figure(p_c);
plot(x_a, y_a, '^red','LineWidth',2); hold on;

for i = 1: N_total_C        
        plot(NA_C_x(i), NA_C_y(i),     '^green','LineWidth',1);        hold on;  
        text(NA_C_x(i), NA_C_y(i), NAidC(i), 'FontSize',6)
end
plot(x_c_C, y_c_C, '--green', 'LineWidth',1);
xlabel('Eje Y: Latitud en Km (1º~ 110 Km)', 'FontSize',20);    ylabel('Eje X: Longitud en Km (1º~ 111 Km)', 'FontSize',20);     axis square
view(-90,90) 
set(gca,'ydir','reverse');