1
DISCA / UPV Departament d’Informàtica de Sistemes i Computadors
Universitat Politècnica de València
Enrique Hernández y Joan Vila
Computadores y Programación
Matlab: SACTAMatlab: SACTA
2
CYP
Com
puta
dore
s y
Prog
ram
ació
n
SACTASACTA
Índice– Introducción
– Control de Tráfico Aéreo.
– Coordenadas geográficas
– Descripción de SACTA
– Manual de la librerías SACTA.
– Ejercicios
2
3
CYP
Com
puta
dore
s y
Prog
ram
ació
nIntroducciIntroduccióónn
Objetivo
– Desarrollo de un programa de control de tráfico aéreo usando MATLAB.
Entorno
– Se proporciona un entorno de simulación SACTA:Simulador de Aprendizaje de Control de Tráfico Aéreo.
– Es un simulador muy básico.Consta de un monitor de radar para Windows.
Funciones de alto nivel para utilizarlo en Matlab.
Escenarios simulados
Conexión a radar secundario– NO es el objetivo del trabajo aprender Control de Tráfico Aéreo.
Por ello, por motivos docentes, se ha simplificado el sistema.
4
CYP
Com
puta
dore
s y
Prog
ram
ació
n
SACTASACTA
Índice– Introducción
– Control de Tráfico Aéreo.
– Coordenadas geográficas
– Descripción de SACTA
– Manual de la librerías SACTA.
– Ejercicios
3
5
CYP
Com
puta
dore
s y
Prog
ram
ació
nControl de TrControl de Trááfico Afico Aééreoreo
Objetivo
– Asegurar el tráfico comercial y aéreo. Coordinar los movimientos de miles de aviones
mantener las distancias de seguridad
guiarlos para el despegue o aterrizaje
Gestionar incidencias (mal tiempo, cierre aeropuertos, etc.)
– y todo esto sin producir retrasos…
División
– Todas este control se realiza por zonas.
6
CYP
Com
puta
dore
s y
Prog
ram
ació
n
Control de TrControl de Trááfico Afico Aééreoreo
División (ver animación aena.swf arrastrando el fichero al navegador)
– En España el tráfico se divide por zonas.
– Cada zona gestiona un área geográfica con un radar
– Cada zona esta enlazada con el resto por redes informáticas.
Aena.swf
4
7
CYP
Com
puta
dore
s y
Prog
ram
ació
nControl de TrControl de Trááfico Afico Aééreoreo
Centro de control de tránsito aéreo (ACC)
– Controla el tráfico aéreo en la zona correspondiente. Están situados en Madrid, Barcelona, Las Palmas de Gran Canaria y Sevilla, y el centro de control de área terminal (TACC) de Palma de Mallorca.
– Éstos se complementan con los TACC de Valencia y Santiago, que proporcionan también distintos servicios de tránsito aéreo.
– Cada uno de estos centros dispone de un radar primario y secundario.
Primario: sólo permite determinar la posición de la aeronave en dos dimensiones
Secundario ; ofrece datos tales como identificación y nivel de vuelo (altura barométrica), utilizando un transponder.
8
CYP
Com
puta
dore
s y
Prog
ram
ació
n
Control de TrControl de Trááfico Afico Aééreoreo
Transponder (ver animación transponder.swf)
– Responde a la señal del radar devolviendo información de altura, etc.
transponder.swf
5
9
CYP
Com
puta
dore
s y
Prog
ram
ació
nControl de TrControl de Trááfico Afico Aééreoreo
Plan de vuelo.
– Antes de iniciar un vuelo el piloto proporciona al controlador de tráfico aéreo:
Nombre de la aerolínea y número de vuelo.
Tipo de avión y equipamiento.
Velocidad y altitud de vuelo prevista.
Ruta de vuelo (aeropuerto origen y destino; centros por donde va a pasar).
– Este plan de vuelo es validado y se introduce en el ordenador, que genera una ficha de progreso de vuelo.
Esta ficha se pasa de controlador a controlador cuando va pasando de zona.
Esta ficha es constantemente actualizada con la información en tiempo real del vuelo.
10
CYP
Com
puta
dore
s y
Prog
ram
ació
n
Control de TrControl de Trááfico Afico Aééreoreo
Navegación aérea.– Navegación instrumental:
Se realiza con el apoyo de instrumentos.
Tienen un plan de vuelo y sigue una rutas establecidas.
– Cartas de navegaciónDefinen las “carreteras aéreas”.
Hay dos espacios aéreos:Inferior : < 24000 ft (7320m).Superior: >= 24000 ft.
– Separación de seguridad.Altitud:
Espacio aéreo Inferior 1000ft (305m)Espacio aéreo Superior 2000ft (610m)
Misma altitud: 5 millas (8km).
6
11
CYP
Com
puta
dore
s y
Prog
ram
ació
nControl de TrControl de Trááfico Afico Aééreoreo
Curiosidades I…
– Whirlwind (1951). Primer ordenador para aplicaciones en tiempo real con una interfaz gráfica.
SAGE: Precursor de los Sistemas de control de tráfico aéreo
12
CYP
Com
puta
dore
s y
Prog
ram
ació
n
Control de TrControl de Trááfico Afico Aééreoreo
Curiosidades II…
– SAGE 1955: Evolución de la terminal gráfica.
7
13
CYP
Com
puta
dore
s y
Prog
ram
ació
nSACTASACTA
Índice– Introducción
– Control de Tráfico Aéreo.
– Coordenadas geográficas
– Descripción de SACTA
– Manual de la librerías SACTA.
– Ejercicios
14
CYP
Com
puta
dore
s y
Prog
ram
ació
n
Coordenadas geogrCoordenadas geográáficasficas
Cualquier lugar de la Tierra se determina con dos números, su latitud y su longitud.
– La latitud mide el ángulo entre cualquier punto y el ecuador.
– La longitud mide el ángulo a lo largo del ecuador desde cualquier punto de la Tierra. Se acepta que Greenwich en Londres es la longitud 0.
8
15
CYP
Com
puta
dore
s y
Prog
ram
ació
nCoordenadas geogrCoordenadas geográáficasficas
Notación utilizada:
– Hay varias notaciones para representar las coordenadas; nosotros vamos a utilizar número reales con signo.
– 1º es aproximadamente 110km. (pero varia dependiendo la latitud y la longitud)
E:EsteO:Oeste
N:Norte
S:Sur
Madrid(-3,41 40,24)
Palma de Mallorca(2,39 39,35)
Longitud +Longitud -Latitud +
Latitud `-
Santiago de Chile(-70,11 -20,32)
Sydney(151,18 -33,90)
16
CYP
Com
puta
dore
s y
Prog
ram
ació
n
SACTASACTA
Índice– Introducción
– Control de Tráfico Aéreo.
– Coordenadas geográficas
– Descripción de SACTA
– Manual de la librerías SACTA.
– Ejercicios
9
17
CYP
Com
puta
dore
s y
Prog
ram
ació
nDescripciDescripcióón de SACTAn de SACTA
SACTA
– Consta de tres módulos principales.SACTAmon: Monitor SACTA.
Visualizador del espacio aéreo. Programa independiente para Windows.Librería SACTA
Funciones para Matlab para poder controlar SACTAmonRADAR
Funciones para Matlab para obtener información del radar.
– SimulaciónPara desarrollar la aplicación se simula la información del radar por medio del módulo ESCENARIO
Esto permite definir varios escenarios para poder probar nuestro programas.Desarrollo y prueba más rápido.
– Datos reales RADARCuando nuestro programa funcione correctamente nos conectaremos al RADAR real.
18
CYP
Com
puta
dore
s y
Prog
ram
ació
n
DescripciDescripcióón de SACTAn de SACTAMatlab
SACTAmon
TCP/IPLibrería SACTA
Para Matlab
SACTAlib
Librería RADARPara Matlab
SACTA
RADAR
Tu programa
10
19
CYP
Com
puta
dore
s y
Prog
ram
ació
nDescripciDescripcióón de SACTAn de SACTA
Matlab
SACTAmon
TCP/IPLibrería SACTA
Para Matlab
SACTAlib
Librería RADARPara Matlab
SACTA
RADAR
Tu programa
Escenario simulado
ESCENARIO
20
CYP
Com
puta
dore
s y
Prog
ram
ació
n
DescripciDescripcióón de SACTAn de SACTA
Monitor SACTA
– Presenta la información del tráfico aéreo.
– Información estáticaMalla: latitud y longitudes de referencia.
Mapa : mapa vectorial de la zona.
Rutas : rutas de vuelo
– Información dinámicaPosición del haz (ángulo)
Tiempo.
Objetos. Presenta la siguiente información:
Nombre, destinoLongitud, LatitudAltitud (ft), Velocidad (NM/h).
– Se puede presentar o ocultar esta información.
– Ventana con la información de los aviones
11
21
CYP
Com
puta
dore
s y
Prog
ram
ació
nDescripciDescripcióón de SACTAn de SACTA
Definición de escenarios.– Los escenarios simulados se definen por medio de un array de estructuras,
donde cada elemento i define un objeto:e(i).Nombre = 'A380';e(i).Destino = 'BCN';e(i).Trayecto = [-0.042, 38, 5000, 0 ;
-0.08, 40.13, 6000, 1200;0.059, 42.46, 4000, 3000];
– El nombre y destino son simplemente descriptivos, y lo más interesante es la definición de trayecto:
El trayecto es una matriz en la que cada fila se define.Longitud, Latitud, Altura (pies), tiempo.
Cada fila está definiendo un punto para un tiempo t.Por lo tanto dos puntos i y i+1 están definiendo una trayectoria entre los tiempos ti y ti+1.La velocidad vendrá dada por la distancias entre los puntos partido (ti+1-ti)Si altura vale -1 indica que el avión no ha despegado (o se ha estrellado).
– La forma de generar escenario (ver ejemplo escenario1.m)Se crea un script y se crea la estructura e(i).Se guarda la variable e en un fichero.
– Podéis crear vuestros propios escenarios.
t0
t1
t2
22
CYP
Com
puta
dore
s y
Prog
ram
ació
n
SACTASACTA
Índice– Introducción
– Control de Tráfico Aéreo.
– Coordenadas geográficas
– Descripción de SACTA
– Manual de la librerías SACTA.
– Ejercicios
12
23
CYP
Com
puta
dore
s y
Prog
ram
ació
nManual de las librerManual de las libreríías SACTAas SACTA
Librerías– Se ha desarrollado un conjunto de funciones para manejar los distintos
módulos.
– Todas las funciones tienen ayuda (help Nombre_funcion)
– Todas las funciones tienen un prefijo indicando el nombre de la librería.P.ej SACTA_PonCoord, RADAR_Leer.
– SACTAHay funciones para Iniciar el monitor, poner coordenadas, mapa, rutas, etc.
Actualizar los objetos.
– RADARObtiene información del RADAR
– ESCENARIOContiene los escenarios. Lo utiliza RADAR para obtener los datos.
24
CYP
Com
puta
dore
s y
Prog
ram
ació
n
Manual de las librerManual de las libreríías SACTAas SACTA
SACTA I
– SACTA_IniciarInicia las librerías y comprueba la conexión con el monitor SACTA
Devuelve 0 si ha funcionado correctamente
– SACTA_PonCoordSACTA_PonCoord Define las coordenadas del Monitor
RET = SACTA_PonCoord(pLonO, pLonE, pLatN, pLatS)
donde pLonO y pLonE son las longitudes OESTE y ESTE, y
pLatN y pLatS son la latitud NORTE y SUR
Devuelve 0 si ha funcionado correctamente
13
25
CYP
Com
puta
dore
s y
Prog
ram
ació
nManual de las librerManual de las libreríías SACTAas SACTA
SACTA II
– SACTA_PonMallaSACTA_PonMalla Define la malla (grid) del monitor
RET = SACTA_PonMalla(pLon, pLat)
pLon array con las longitudes donde hay definidas líneas
pLat array con las latitudes donde hay definidas líneas
Devuelve 0 si ha funcionado correctamente
Ejemplo de uso
LonGrid = [-2.0 -1.0 0 1.0 2.0];
LatGrid = [37.0 38.0 39.0 40.0 41.0];
SACTA_PonMalla(LonGrid, LatGrid);
26
CYP
Com
puta
dore
s y
Prog
ram
ació
n
Manual de las librerManual de las libreríías SACTAas SACTA
SACTA III– SACTA_PonMapa
SACTA_PonMapa Pone el mapa en formato vectorial
RET = SACTA_PonMapa(pMapa)
pMapa es matriz con dos columnas (longitud y latitud)
Un valor infinito indica que la próxima coordena no enlaza con la
anteriores.
Ejemplo
Inf Inf
-1.000045 37.584565
-1.002392 37.584565
-1.003272 37.585445
-1.006792 37.585445
Inf Inf
-1.007672 37.586325
-1.007966 37.585738
-1.007966 37.584858
Devuelve 0 si ha funcionado correctamente
14
27
CYP
Com
puta
dore
s y
Prog
ram
ació
nManual de las librerManual de las libreríías SACTAas SACTA
SACTA IV
– SACTA_PonRutasSACTA_PonRutas Define la rutas en pantalla
RET = SACTA_PonRutas(pRutas)
pRutas es un array de celdas en la que se contienen las rutas.
Cada celda contiene una matriz con dos columnas y n-filas indicando
longitud y latitud
Ejemplo de creación de rutas
ruta1 = [ -0.5 41.0; 0.0 39; 0.5 38 ];
ruta2 = [ 2 39.1; 0 39.1];
ruta3 = [ 0 39.1; -2 39.5];
rutas = { ruta1 ruta2 ruta3 };
Devuelve 0 si ha funcionado correctamente
28
CYP
Com
puta
dore
s y
Prog
ram
ació
n
Manual de las librerManual de las libreríías SACTAas SACTA
SACTA V– SACTA_PonHaz
SACTA_PonHaz Actualiza el haz en pantallaRET = SACTA_PonHaz(pAngulo, pHora, pObjetos)pAngulo angulo en radianes del hazpHora Hora actual (es una cadena; se puede poner cualquier formato)pObjetos Un array con los objetos identificados por el hazCada objeto es una estructura que contiene los siguientes elementos
Campo Tipo Descripción-------------------------------------------------------Clave uint16 Identificador único del objetoNombre charx8 Nombre del aviónDestino charx4 Destino del aviónLongitud double LongitudLatitud double LatitudAltura double Altura en piesVelocidad double Velocidad en mphIdentificacion uint8 0 - sin identificar (OVNI); 1 – IdentificadoColor uint8 Color del avión Estado uint8 Estado del avión (0 - correcto;
1 - peligro colisión; 2 - fuera de ruta)
Si pAngulo es -1 no se muestra el haz ni se iluminan los objetos Devuelve 0 si ha funcionado correctament
15
29
CYP
Com
puta
dore
s y
Prog
ram
ació
nManual de las librerManual de las libreríías SACTAas SACTA
ESCENARIO
– ESCENARIO_CargarESCENARIO_Cargar Carga un escenario a partir de un fichero
ESCENARIO_Cargar(pEscenario, pVelocidad, pConectaRadar)
pEscenario : Fichero donde está almacenado el escenario de pruebas
pVelocidad : Indica la velocidad de simulación.
1 funciona en tiempo real,
> 1 se indica factor de multiplicación del tiempo.
Por ejemplo si pVelocidad es 10 indica que va 10
veces más rápido y 10s de simulación tardan 1 seg. real.
pConectaRadar : (opcional) Si TRUE se conectar al radar de verdad (con lo cual los dos parameteros Escenario y Velocidad no se tienen en cuenta)
30
CYP
Com
puta
dore
s y
Prog
ram
ació
n
Manual de las librerManual de las libreríías SACTAas SACTA
ESCENARIO (II)– ESCENARIO_Distancia
ESCENARIO_Distancia devuelve la distancia entre dos coordenadas en km.
ESCENARIO_Distancia(Lon1, Lat1, Lon2, Lat2)
Aproximadamente...
1 grado latitud = 110 km
1 grado longitud = 111 km
– ESCENARIO_DistPuntoRectaESCENARIO_DisPuntoRecta devuelve la distancia un punto y una recta definida por dos puntos en pies
ESCENARIO_DistPuntoRect(Lonp1, Latp1, Lonr1, Latr1, Lonr2, Latr2)
Lonp1, Latp1 : Longitud y latitud del punto
Lonr1, Latr1, Lonr2, Latr2 : Longitud y latitud de los puntos r1 y r2 que definen la recta.
16
31
CYP
Com
puta
dore
s y
Prog
ram
ació
nManual de las librerManual de las libreríías SACTAas SACTA
RADAR– RADAR_Leer
RADAR_Leer Lee la información del radar en función del tiempo[iRet rAngulo rTiempo rObjetos ] = RADAR_Leer(pTiempo)pTiempo es un double con los segundos desde el inicio de la simulación.Devuelve lo siguiento
iRet : número de objetos leídos.rAngulo : ángulo actual del radar en radianes. Si en el escenario se
indica turbo devuelve siempre -1.rTimepo : tiempo de la simulación en segundos. Es un double.rObjetos : Lista de objetos.
Cada objeto es una estructura que contiene los siguientescampos:
Campo Tipo Descripción-------------------------------------------------------Clave uint16 Identificador único del objetoNombre charx8 Nombre del aviónDestino charx4 Destino del aviónLongitud double LongitudLatitud double LatitudAltura double Altura en piesVelocidad double Velocidad en mphIdentificacion uint8 devuelve 0Color uint8 devuelve 0Estado uint8 devuelve 0
32
CYP
Com
puta
dore
s y
Prog
ram
ació
n
SACTASACTA
Índice– Introducción
– Control de Tráfico Aéreo.
– Coordenadas geográficas
– Descripción de SACTA
– Manual de la librerías SACTA.
– Ejercicios
17
33
CYP
Com
puta
dore
s y
Prog
ram
ació
nEjerciciosEjercicios
Ejercicios
– Los ejercicios están pensados para tres sesiones de laboratorio.Primera sesión: Presentación y hacer bucle de control.
Segunda sesión: Identificación y control de objetos.
Tercera sesión: Almacenar y visualizar trayectorias.
– Para que el software funcione asegurarse que se tiene la versión de Matlab 7.1.0. o superior.
34
CYP
Com
puta
dore
s y
Prog
ram
ació
n
EjerciciosEjercicios
Sesión 1: Configuración de SACTA y creación del bucle de lectura y actualización.– Primero bajarse el software de la microweb.
1. Crear un directorio de trabajo (p.e. w:\cyp\SACTA).2. Bajar el fichero comprimido SACTA.zip y extraer todos los fichero al
directorio de trabajo.3. Configurar en Matlab el directorio de trabajo.
– Segundo: Crear un script para controlar todo el sistema (p.e. ControlTrafico.m).Este script haría lo siguiente (en pseudocodigo)Cargar escenario ‘e1’.Iniciar SACTASi correcto
PonCoordenasPonMallaPonMapaPonRutastiempo = 0;Bucle mientras tiempo sea menor tmax
Lee objetos del radarActualizar objetos en el radar.
finFin
– Tercero: para probar el programa hay que tener arrancado el monitor. Desde el administrador de archivos lanzar la aplicación SACTAmon.bat
18
35
CYP
Com
puta
dore
s y
Prog
ram
ació
nEjerciciosEjercicios
Sesión 1– Datos
Coordenadas Manises : -0.28 39.29 ; 3º grados en ventana.Es decir el cuadrado definido por los siguientes puntos -0.28-1.5,-0.28+1.5, 39.29-1.5, 39.29+1.5
Malla: presentar línea para cada grado.Las líneas estarán definidas en la siguiente longitudes -1,0,1 y latitudes 38,39,40.
Rutas:A33 = [ -3.17 40.22; -0.28 39.29; 2.45 39.26 ];A34 = [ 0.33 42.41; -0.1 40.15; -0.19 39.53; -0.28 39.29; -0.34 38.16; 0.012 36.52];B28 = [ 2.06 41.18; -0.28 39.29; -2.13 38.21];G30 = [ -0.28 39.29; 1.28 38.54];N609 = [ -0.012 36.52; -0.08 40.13; 0.059 42.46];
Mapa: carga del fichero MapaCV.mat. Este fichero contiene la variable mapaCV que es la que tiene que usar SACTA_PonMapa
Escenario e1, tMax = 2000s.Cada escenario tiene un tiempo de simulación.
36
CYP
Com
puta
dore
s y
Prog
ram
ació
n
EjerciciosEjercicios
Sesión 2: Identificación de los objetos– Todos los ejercicios de esta sesión se basan en modificar el bucle para identificar y
controlar los objetos.Por ello después de leer los objetos hay que realizar una serie de operaciones sobre ellos antes de enviarlos al monitor.
El objetivo es rellenar correctamente los campos Identificación y Estado de los objetos leídos.
Para ello se realizará un bucle para los objetos leído del radar y se desarrollará una función para cada ejercicio.
Esta función tendrá como parámetro un objeto y devolver el objeto modificado.En seudocodigo será:Mientras tiempo < tmax
Objetos = RADAR_Leer
Para todos los objetos
Objeto_i = IdentificarObjeto(Objeto_i);
Objeto_i = IdentificarRuta(Objeto_i, arg…);
…
Fin
SACTA_PonHaz(…)
fin
19
37
CYP
Com
puta
dore
s y
Prog
ram
ació
nEjerciciosEjercicios
Sesión 2: Ejercicios A– Ej. 2.1: Identificación de objetos.
Función IdentificarObjeto
Objeto no identificado -> aquel que no tiene nombre.
Si están identificados se modifica el campo Identificación.
Utilizar escenario e1, tmax = 2000s
– Ej. 2.2: Gestión de rutasFunción IdentificarRuta
Comprobar si los objetos siguen una ruta (sólo 2d)
Pasando como parámetros las rutas definidas, comprobar que la distancia es menor a 1000 pies (en 2 dimensiones).
Para ello utilizar la función ESCENARIO_DistPuntoRectaEl truco es buscar entre todas las recta de todas la rutas si hay alguna que esté a menos de 200 pies.
Si un avión no está en ruta se modifica su estado a 2 (fuera ruta).
Utilizar escenario e2, tmax = 2000s
38
CYP
Com
puta
dore
s y
Prog
ram
ació
n
EjerciciosEjercicios
Sesión 2: Ejercicios B
– Ej. 2.3: Gestión de colisiones simpleFunción ColisionSimple
Comprobar si dos objetos van a colisionar
Para ello a esta función se le pasará el objeto a comprobar y el array con todos los objetos.
Para ello comprobar en cada momento si se respetan las distancias mínimas de seguridad. Si hay peligro de colisión el objeto pasa a estado colisión (1)
Para ello hay que iterar por cada objeto con el resto de objetos y comprobar las distancias de colisión.Primero comprobar si está a misma altitud (<1000ft) y luego comprobar distancia < 8km. Para esto último podéis utilizar la función ESCENARIO_Distancia.
Utilizar escenario e3 tmax = 2000s
20
39
CYP
Com
puta
dore
s y
Prog
ram
ació
nEjerciciosEjercicios
Sesión 2: Ejercicios C (opcional y para nota…).
– Ej. 2.4: Gestión de colisiones con predicción (opcional)Función ColisionFutura
Predecir si dos objetos van a colisionar
Para ello se calcula la ruta de todos los objetos y se comprueba si va a colisionar con otro. Se avisará con 15 minutos de antelación.
Idea: hay que obtener la ecuación paramétrica de la recta en función de t a partir de dos puntos. El actual y otro anterior. Ver derecha.Para ello utiliza la función ESCENARIO_Parametrica.Con esta ecuación se predice la situación del objeto en t+15minutos.Se aplica los criterios de colisión simple para los nuevos puntos obtenidos.
Utilizar escenario e3 tmax = 2000s
2 11 1
2 1
2 11 1
2 1
2 11 1
2 1
( ) ( )
( ) ( ) ( )
( ) ( )
lon lonlon t t t lont t
lat latP t lat t t t latt t
alt altalt t t t altt t
⎛ ⎞−= − +⎜ ⎟−⎜ ⎟
⎜ ⎟−= = − +⎜ ⎟
−⎜ ⎟⎜ ⎟−
= − +⎜ ⎟−⎝ ⎠
P1(lon1, lat1, alt1, t1)
P2(lon2, lat2, alt2, t2)
40
CYP
Com
puta
dore
s y
Prog
ram
ació
n
EjerciciosEjercicios
Sesión 3– El objeto de esta sesión es almacenar la información de los vuelos en fichero
y después presentar está información
– Ej. 3.1: Modificar el programa de la sesión anterior para generar un fichero.Este fichero debe almacenar en cada línea el tiempo, Clave, Longitud,Latitud y Altura de todos los objetos.
El número de muestras será de una por iteración
– Un ejemplo de fichero es el siguiente4 1 -0.0421267 38.0071 5003.33
4 3 -3.15844 40.2163 10000
8 1 -0.0422533 38.0142 5006.67
8 3 -3.14688 40.2126 10000
12 1 -0.04238 38.0213 5010
12 3 -3.13532 40.2088 10000
16 1 -0.0425067 38.0284 5013.33
16 3 -3.12376 40.2051 10000
…
21
41
CYP
Com
puta
dore
s y
Prog
ram
ació
nEjerciciosEjercicios
Sesión 3– Ej. 3.2: Visualización de rutas 2-D
Realizar una función que leyendo el fichero generado en el ejercicio anterior visualice en un gráfico las posiciones de los aviones.
Para ello realizar una funciónfunction DibujaObjeto2D(fichero, pClave)
Por ejemplo para el escenario 2 y clave 4 sacaría
El algoritmo sería como sigueAbrir fichero en lecturaLon = []; Lat = [];Mientras no fin de fichero
Leer tiempo, clave, longitud, latitud y alturaSi la clave es igual a pClave
añadir Longitud y Latitud a Lon y LatFin
FinPlot(Lon, Lat) -1.5 -1 -0.5 0 0.5 1 1.5 2
38
38.5
39
39.5
40
40.5
41
42
CYP
Com
puta
dore
s y
Prog
ram
ació
n
EjerciciosEjercicios
Sesión 3
– Ej. 3.3: Visualización de rutas 3-DModificar el ejemplo anterior para incluir Altura y dibujar en 3-D utilizando plot3.
Para ello realizar una función
function DibujaObjeto3D(fichero, pClave)
– Ej. 3.4: OpcionalModificar el ejercicio anterior pare que se muestren varios objetos en un mismo gráfico.
Cada uno de los aviones tendráun color de línea diferente.
-2-1
01
2
38
39
40
410
2000
4000
6000
8000
10000