Ejercicio obligatorio 2
Fecha de entrega: Jueves 4 de abril
Rectas y punto
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.