Práctica 3. Camara.

(25 de Octubre 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 clase llamada Camara para crear objetos que representan la posición en la que puede situarse una cámara de video. Dependiendo de donde se situe una cámara se observará el entorno desde un punto de vista diferente. Estos objetos nos permitirán calcular como se ve el entorno desde ellos.

Nos centraremos en un espacio de dos dimensiones para simplificar la realización de la práctica.

Usaremos una clase llamada Punto, que se proporciona ya hecha en Punto.java, y que permite representar posiciones en un espacio de dos dimensiones como unas coordenadas (x,y).

La clase Camara

Los objetos de esta clase representan la posición de una cámara de video en un espacio de dos dimensiones. Para ello son necesarios tres valores. Las coordenadas (x,y) donde está anclada la cámara, y el ángulo de giro que indica como está orientada.

Posicion de la cámara = Coordenadas (x,y) + Angulo de giro

Por tanto los objetos tendrán tres campos o atributos de tipo real (x,y,a), donde x e y indican un punto del plano, y a indica un ángulo de giro. Así, los valores (10,20,1.5) se refieren a una cámara situada en el punto (10,20) del plano, y orientada en un angulo de 1.5 radianes. El Eje X positivo es la orientación 0 radianes, y el Eje Y positivo es la orientación PI/2 radianes.

Cree un fichero llamado Camara.java, que contenga la clase pública Camara, y declare los tres atributos x, y y a como de tipo double. Estos atributos deben ser privados. Cree también tres métodos llamados getX(), getY() y getA() para acceder al valor de estos atributos.

Esta clase debe tener un único constructor público que tome como parámetros los valores a asignar a los campos x, y y a.

public Camara(double x, double y, double a)

Cree también un método llamado vista que indique como se ve un punto dado, desde la posición de la cámara. Es decir, si las coordenadas de un punto P del plano son (x2,y2), y tenemos una cámara en (x0,y0,a0), el método vista debe devolver que coordenadas tendría ese punto si el origen de coordenadas estuviera situado en la posición de la cámara, y girado según esté girada la cámara, es decir, debe devolver (x1,y1).

public Punto vista(Punto p)

Incluya también en la clase unos métodos toString y equals.

public String toString()
public boolean equals(Camara c)

El String devuelto por toString debe ser (x,y,a).

Pruebas

Es aconsejable que el alumno diseñe también sus propias pruebas.

Autoevaluación

Esta práctica puede autoevaluarse automáticamante en los ordenadores del laboratorio trabajando con la partición de Linux instalada en ellos. Para ello, deben copiarse los ficheros eval13p3, Punto.java, PruebaCamara1.java y PruebaCamara1Version2.txt en el directorio de entrega de prácticas $HOME/fprg13/p3.

La calificación se obtiene ejecutando el comando sh eval13p3.

Fecha de Entrega

Los ficheros de la práctica se dejarán en el directorio $HOME/fprg13/p3 de la cuenta de laboratorio del representante de los grupos de trabajo, antes de las 24:00 del día 31 de Octubre de 2006.

Página actualizada el día 25 de Octubre de 2006.