Examen 02

El examen es de carácter práctico y puede realizarse en una computadora donde se tenga instalado el Java Development Kit (JDK). El estudiante puede consultar de cualquier recurso o referencia que guste, sean hechos durante el curso, estén publicados en libros o en la web. En caso de reutilizar código que haya trabajado con otros compañeros, debe informarlo al profesor al iniciar el examen. Se dispone de dos horas para entregar la prueba y debe realizarse en forma estrictamente individual.

Implemente una clase Vector en Java para representar cantidades vectoriales físicas (como la velocidad, la fuerza y el campo eléctrico) en el plano cartesiano. Un vector consta de magnitud y dirección, y hay varias convenciones para representarlas. Su clase Vector debe representar los vectores en el plano cartesiano, con origen siempre en el punto \(\left(0, 0\right)\) y como punto final las coordenadas \(\left(x, y\right)\), como se aprecia en la Figura 1.

Dos vectores en el plano (en azul), el vector resultante de sumarlos (en lila) y restarlos (en rojo y verde)

Su clase Vector debe ser capaz de realizar lo siguiente

  1. [10%] Almacenar los componentes \(\left(x, y\right)\), los cuales pueden ser distintos de un vector a otro. Inicializarlos por defecto como el vector nulo \(\left(0, 0\right)\).
  2. [10%] Leer un vector del teclado como una pareja de valores separados por un espacio. Sugerencia: haga su método de lectura retornar true cuando se ha leído un vector distinto al vector nulo.
  3. [10%] Imprimir el vector en la pantalla como una pareja \(\left(x, y\right)\). Sugerencia: implemente el método toString() en su clase Vector.
  4. [10%] Calcular la norma o magnitud \(\left|\vec{V}\right|\) utilizando el Teorema de Pitágoras. Calcular la dirección como una coordenada angular \(\theta\) en radianes. Sugerencia utilice el método Math.atan2(y,x) que retorna \(\theta\).
  5. [15%] Sumar y restar vectores. La suma o la resta de dos vectores \(\vec{V_1} = \left(x_1, y_1\right)\) y \(\vec{V_2} = \left(x_2, y_2\right)\) es el vector resultante de sumar o restar sus componentes: \[\vec{V_1} + \vec{V_2} = \left(x_1 + x_2, y_1 + y_2\right)\] \[\vec{V_1} - \vec{V_2} = \left(x_1 - x_2, y_1 - y_2\right)\]
  6. [30%] Hacer un programa que permita al usuario ingresar repetitivamente vectores en el plano y muestre su magnitud, dirección; y cuando se tengan dos vectores, se calcula además la resultante de sumarlos y restarlos (más su magnitud y dirección); como se muestra en el ejemplo de ejecución de abajo. El programa termina cuando el usuario ingrese un vector nulo.
  7. [5% Opcional] Haga que siempre que se imprima un número entero en la pantalla, se haga sin decimales; y si no es entero, con dos decimales.
Operaciones con vectores en el plano

Vector 1: 2 5
V1: (x, y) = (2, 5); (r, θ) = (5.39, 1.19)

Vector 2: 4 -3
V2: (x, y) = (4, -3); (r, θ) = (5, -0.64)

V1 + V2: (x, y) = (6, 2); (r, θ) = (6.32, 0.32)
V1 - V2: (x, y) = (-2, 8); (r, θ) = (8.25, 1.82)
V2 - V1: (x, y) = (2, -8); (r, θ) = (8.25, -1.33)

Vector 3: -1 -1
V3: (x, y) = (-1, -1); (r, θ) = (1.41, -2.36)

V2 + V3: (x, y) = (3, -4); (r, θ) = (5, -0.93)
V2 - V3: (x, y) = (5, -2); (r, θ) = (5.39, -0.38)
V3 - V2: (x, y) = (-5, 2); (r, θ) = (5.39, 2.76)

Vector 4: 0 0
Ejemplo de ejecución del programa

Para presentar su solución, suba su archivo .java a Mediación Virtual en la asignación con nombre Examen02.