Práctica 4. Moviles.
(17 de Noviembre de 2006)
Este enunciado puede ser modificado para introducir nueva
información o modificar errores en cualquier momento. Se
recomienda al alumno que compruebe periódicamente este
enunciado por si tales cambios se producen.
Descripción
En esta práctica vamos a desarrollar una aplicación para simular el
movimiento de varios elementos dentro de un espacio de dos
dimensiones, de forma que cada elemento se mueva siguiendo su propia
trayectoria, y calcularemos como cada elemento ve el movimiento de los
demás. Es decir, es como si cada elementos móvil tuviese una
cámara sobre él, y pudiesemos ver la imagen captada por cualquiera de
las cámaras.
Esta práctica consta de numerosos ficheros java. Algunos se
proporcionan hechos en su totalidad, y otros incompletos con el
objetivo de que el alumno los complete.
Móviles
Los elementos móviles los vamos a representar con objetos de la clase
Movil, que se construyen pasándoles un nombre, una figura y
un tipo de movimiento.
En la clase Movil se definen métodos para dibujarlos en
una pantalla, y obtener su posición en un
momento de tiempo dado.
La clase Movil debe realizarla el alumno de forma que se ajuste a la
documentaci&oacite;n siguiente:
javadoc de la práctica
Nombres
Los nombres de los móviles son simplemente Strings que usaremos para identificar
los móviles cuando los dibujemos en la pantalla.
Figuras
Los móviles se deben dibujar en la pantalla usando la forma gráfica o
imagen que se desee. Para ello, definiremos una interface, llamada
Figura, que representará a cualquier tipo de forma gráfica o imagen,
y que define un método para pintarse en la pantalla.
Esta interface la debe escribir el alumno de forma que se ajuste a la
documentaci&oacite;n siguiente:
javadoc de la práctica
Además, crearemos tres clases de figuras: Cuadrado,
Triángulo y Círculo.
Los triángulos se definen en función de tres puntos que representan las
coordenadas de sus vértices a partir de un punto (0,0)
virtual.
Los Círculos se definen en funcio´n de su radio, y los cuadrados en
función de su lado.
Estas clases implementarán la interface Figura, y el alumno
debe crearlas de forma que se ajusten a la
documentaci&oacite;n siguiente:
javadoc de la práctica
Movimientos
Un movimiento nos indica que trayectoria seguirá un
móvil según pasa el tiempo. Para poder usar diferentes tipos de
movimientos, definimos la interface Movimiento, y posteriormente
realizaremos varias implementaciones de esta interface.
Esta interface define un método llamado avanza que
calcula cual será la nueva posición de un elemento para
un instante de tiempo dado.
El método avanza calculará cuales son los
nuevos valores de la posición (x,y,a) según el tipo de
movimiento que represente.
Crearemos cinco tipos de movimiento:
- MovQuieto: representa ningún tipo de desplazamiento del
móvil.
- MovLineal: representa el movimiento lineal.
Los móviles se desplazarán en línea recta, a velocidad
constante, y sin realizar ningún giro.
- MovAngular: representa el movimiento angular. Los
móviles giran a velocidad angular constante alrededor del
origen de coordenadas. Giran solidarios con un eje imaginario
que los sujeta y los hace girar. Es decir, los elementos no se
mueven como las cabinas de una noria, que no giran, sino que
giran con el eje imaginario que las sujeta. Así, las cabinas
de la noria estarian boca abajo cuando estuvieran situadas en
la parte superior de la noria.
- MovRotacion: representa el movimiento de rotación.
Los móviles rotan con velocidad angular contante alrededor de
su centro, sin variar el valor de las coordenadas (x,y) de su
posición.
La interface Movimiento y sus implementaciones deben ajustarse a la
documentaci&oacite;n siguiente:
javadoc de la práctica
Punto
Esta clase representa unas coordenadas (x,y), y es idéntica a
la definida en la práctica
anterior. Únicamente debe modificarse para su uso dentro del
paquete fprg13.p4.posicion.
Posiciones
Para representar la posición de un elemento en un espacio de
dos dimensiones es necesario un ángulo de giro, además de las
coordenadas (x,y).
Así, la clase Posicion permite crear objetos que representan
un punto y un ángulo de giro.
Posicion = Punto (x,y) + Angulo de giro
|
La clase Posicion debe realizarla el alumno de forma que se ajuste a la
documentaci&oacite;n siguiente:
javadoc de la práctica
Camaras
Necesitamos la clase Camara desarrollada en la práctica anterior,
pero sobrecargando el método vista
para que dada una posición, devuelva como se ve esa posición desde
donde esté emplazada la cámara.
Además, debe modificarse esta clase para su uso dentro del
paquete fprg13.p4.posicion.
La clase Camara debe realizarla el alumno de forma que se ajuste a la
documentaci&oacite;n siguiente:
javadoc de la práctica
Pantalla
Además de esta clases e interfaces, para el desarrollo de esta
práctica usaremos la clase Pantalla de la práctica anterior,
pero adaptándola
para su uso dentro del paquete fprg13.p4.pantalla.
Paquetes
Esta práctica consta de numerosos ficheros que se organizarán en cinco
paquetes:
fprg13.p4.pantalla
fprg13.p4.posicion
fprg13.p4.figuras
fprg13.p4.movimientos
fprg13.p4.moviles
que se corresponden con los directorios
$HOME/fprg13/p4/pantalla
$HOME/fprg13/p4/posicion
$HOME/fprg13/p4/figuras
$HOME/fprg13/p4/movimientos
$HOME/fprg13/p4/moviles
en los que deben colocarse los ficheros para realizar la entrega de la práctica.
Consúltese la
documentaci&oacite;n siguiente:
javadoc de la práctica
para saber en que paquete va cada fichero java a realizar.
Pruebas
Para probar esta práctica se proporcionan varias pruebas ya hechas.
Todas estas pruebas pertenecen al paquete
fprg13.p4.pruebas, con lo cual deben copiarse en el directorio
adecuado.
- PruebaFiguras.java
es un programa de prueba que crea varias figuras y las
pinta en distintas posiciones de una pantalla.
- PruebaMovimientos.java
es un programa de prueba que crea varios tipos de movimientos y
muestra como varian las posiciones según pasa el tiempo.
Su salida debe ser
PruebaMovimientos.txt
- PruebaMovil1.java
es un programa de prueba que imprime la posición de varios
móviles en un instante de tiempo.
Su salida debe ser
PruebaMovil1.txt
- PruebaMovil2.java
es un programa de prueba que dibuja en una pantalla la posición de un
móvil con forma un triángulo y movimiento angular
en varios instante de tiempo.
- PruebaMovil3.java
es un programa de prueba que anima varios móviles, y permite
cambiar la posición de la cámara
mediante una barra de botones.
Fecha de Entrega
Los ficheros de la práctica se dejarán en el
directorio
$HOME/fprg13/p4
de la cuenta de laboratorio del representante de los grupos de trabajo, antes de las
24:00 del día 29 de Noviembre de 2006.
Página actualizada el día 17 de Noviembre de 2006.