Fundamentos de Programación
>
Clases
>
Ejercicios
>
ejercicio 1
>
faq
Fundamentos de Programación
Ejercicio 1 - FAQ
Preguntas frecuentes de los alumnos.
Última actualización: 18 de octubre de 2010
¿Cómo se entrega el ejercicio?
Por email dirigido a jmanas@dit.upm.es,
adjuntando los ficheros .java pedidos.
¿Hay que documentar el código?
Sí, usando
javadoc;
si se entrega sin documentar, la nota se dividirá por 2.
¿Cómo se calcula el delta para viajar?
Para viajar de A a B,
en general basta calcular
delta = (B.longitud - A.longitud) / PASOS
... pero esa no siempre es la forma ideal de viajar de A a B.
Por ejemplo, para viajar de Santiago de Chile a Auckland en Nueva Zelanda:
Santiago: longitud = 70 45 W = -1.2348
Auckland: longitud = 174 45 E = 3.0499
d1 = 4.2847
que esa no es la mejor forma de hacer el viaje
puede verse en el siguiente mapa:
sería más corto el recorrido d2 .
Para calcular d2 basta tomar el punto que tiene longitud negativa
y sumarle 2π (es como dar una vuelta a la tierra).
Con este 'truco' podemos calcular
Santiago: longitud + 2π = 5.0483
Auckland: longitud = 3.0499
d2 = -1.9984
El signo negativo nos dice que debemos viajar hacia el oeste,
en deltas de valor -1.9984 / PASOS.
Este desplazamiento en 2π lo debemos aplicar al punto
que tenga una longitud negativa (al oeste del meridiano cero),
siempre que la distancia "normal" d1 sea mayor que π.
¿Qué distancia hay que calcular entre 2 puntos 3D?
La distancia pitegórica en un espacio de 3 dimensiones;
o sea, la raíz cuadrada de la suma de los cuadrados
de la diferencia en X, en Y y en Z:
- calcula la diferencia en X, en Y y en Z
- elévelas al cuadrado
- súmelas
- devuelva la raíz cuadrada
Datos para probar si construyo bien un Punto3D
Si crea un punto 3D usando las coordenadas de Madrid,
"40 26 N 3 42 W"
el constructor debe calcular los siguientes valores:
- x = 0.75957456...
- y = -0.04911948...
- z = 0.64856283...
También es buena idea probar con puntos evidentes como
- "0 0 N 0 0 W"
- "0 0 N 0 0 E"
- "0 0 S 0 0 W"
- "0 0 S 0 0 E"
- "90 0 N 0 0 W" (el Polo Norte)
- "90 0 S 0 0 W" (el Polo Sur)
- "0 0 N 180 0 E"
- "0 0 N 180 0 W"
Datos para probar la proyección ortográfica
Usando el mapa
String MAPA = "spain_550.png";
Punto3D PUNTO_0 = new Punto3D("55 0 N 20 0 E");
double RADIO = 550 / 2;
debe obtener los siguientes valores:
- "0 0 N 0 0 W" → (-0.342, -0.770)
- "0 0 N 0 0 E" → (-0.342, -0.770)
- "0 0 S 0 0 W" → (-0.342, -0.770)
- "0 0 S 0 0 E" → (-0.342, -0.770)
- "90 0 N 0 0 W" → (-0.000, 0.574)
- "90 0 S 0 0 W" → null
- "0 0 N 180 0 E" → null
- "0 0 N 180 0 W" → null
- "0 0 N 90 0 W" → null
- "0 0 N 90 0 E" → (0.940, -0.280)
- "40 26 N 3 42 W" → (-0.306, -0.199) [Madrid]
- "34 3 N 118 15 W" -> (-0.552, 0.828) [Los Ángeles]
Java no encuentra Color.RED
Importe la clase Color:
import java.awt.Color;
¿Dónde puedo encontrar imágenes ortográficas de la Tierra?
Elija longitud y latitud y colóquese lo bastante lejos:
¿Cómo se calculan las coordenadas x y z?
Usando operaciones trigonométricas
- class Math
- x = R * coseno(latitud) * coseno(longitud)
- y = R * coseno(latitud) * seno(longitud)
- z = R * seno(latitud)
Donde debe expresar longitud y latitud en radianes y usar R = 1.
¿Cómo se calculan longitud y latitud?
Usando operaciones trigonométricas
- class Math
- latitud = arco-seno(z / R)
- longitud = arco-tangente(y, x)
Donde debe usar R = 1.
¿Cómo se pasa de radianes a grados y minutos?
- class Math
- para obtener el valor absoluto: Math.abs()
- para pasar de radianes a grados: Math.toDegrees()
- para quedarnos con la parte entera: int x = (int) n
- para quedarnos con la parte decimal restamos al número real la parte entera
Tenemos por ejemplo, la longitud de Madrid, "3 42 W":
- getLongitud() devuelve radianes: -0.0645771823237902
- nos quedamos con el valor absoluto: 0.0645771823237902
- pasamos radianes a grados sexagesimales: 3.7000000000000006
- extraemos la parte entera: 3
- extraemos la parte decimal: 0.7000000000000006
- pasamos la fracción a minutos multiplicando por 60: 42.000000000000036
- nos quedamos con la parte entera: 42
- escribimos grados y minutos: "3 42"
- como era una longitud negativa, añadimos oeste: "3 42 W"
Las mismas operaciones se usan para presentar la longitud y la latitud.