Ejercicio obligatorio 2

Fecha de entrega: Jueves 4 de abril

Rectas y punto

../_images/20191_ej2.png

Se pide implementar una función bool esta_arriba(const float coordenadas[][2], int n, float x, float y); que diga si un punto de coordenadas (x, y) se encuentra por encima de la recta delimitada por las coordenadas. Las coordenadas son un vector de n pares de forma {{X0, Y0}, {X1, Y1},... {Xn-1, Yn-1}} y se encuentran ordenados por coordenada \(x\) creciente.

Se puede asumir que \(X_0 \leq x \leq X_{n-1}\).

Rectas y punto II

Se pide implementar un programa que cargue en memoria el siguiente vector de coordenadas:

\([(-10.1, 20), (-5, 20), (10.5, -10), (15, -10), (21, 0), (34.5, -20), (48, 7)]\)

y que le pida al usuario pares de coordenadas \((x, y)\) informándole si las mismas se encuentran por encima o por debajo del vector definido. El programa debe terminar cuando se ingrese una coordenada donde su valor de \(x\) exceda los límites del vector definido.

Traslación de puntos

Se pide implementar una función void trasladar(float coordenadas[][2], int n, float dx, float dy); que, dado un vector de coordenadas idéntico al del ítem anterior modifique cada una de sus componentes mediante la adición del par (dx, dy).

Rotación de puntos

Se pide implementar una función void rotar(float coordenadas[][2], int n, double rad); que dado un vector de coordenadas rote cada una de ella rad radianes con respecto al origen de coordenadas.

Nota

Recordar que para rotar un par de coordenadas \((x, y)\) un ángulo \(\theta\) se debe realizar la operación:

\(\begin{bmatrix}x' \\y' \\\end{bmatrix} = \begin{bmatrix}\cos \theta & -\sin \theta \\\sin \theta & \cos \theta \\\end{bmatrix}\begin{bmatrix}x \\y \\\end{bmatrix}\).

La operación puede descomponerse como:

\(x' = x \cos \theta - y \sin \theta\),

\(y' = x \sin \theta + y \cos \theta\).

Pruebas

Para los dos últimos puntos se pide programar algún pequeño caso de uso donde se vean los resultados de llamar a estas funciones. No hace falta que este programa sea interactivo o que tenga un fin concreto, es sólo una demostración de uso de lo desarrollado.

Entrega

Deberán entregarse los códigos fuentes desarrollados.

La entrega se realiza por correo a la dirección algoritmos9511entregas en gmail.com (reemplazar en por arroba).

El ejercicio es de entrega individual.