Conversión a coordenadas polares
Una forma alternativa al sistema cartesiano de describir la posición de los puntos de un plano son las coordenadas polares,
en las que se indica la distancia al centro,
, y el ángulo (con signo) que forma respecto al semieje positivo de abscisas,
.
Pasar de coordenadas rectangulares a cartesianas es muy sencillo. Usando trigonometría resulta
En este ejercicio vamos a implementar un programa que realice el proceso inverso, esto es, que pase de coordenadas rectangulares a polares.
Para ello es fácil despejar (tomando el cuadrado de las ecuaciones y sumando, así como diviendo la segunda por la primera)
Lo único que falta para resolver el problema es invertir la segunda expresión para obtener . Sería tentador indicar
pero esto no daría la solución correcta para todos los valores de
. Esto es lo que pasa por "invertir" una función no invertible.
La solución correcta se puede obtener analizando los casos en cada cuadrante y las semirrectas que los separan, de donde se obtiene
la expresión
.
En resumen, la solución viene dada por [3] y [6], que es lo que se pide implementar. No obstante, el ángulo se expresará en
grados como un número en el intervalo . Para esto puede observarse podemos obtener un ángulo
equivalente a uno negativo sumándole 360 grados.
Orientación: muchos lenguajes de programación incluyen en sus bibliotecas una función de nombre atan2 que gestiona los casos indicados en [6].
Entrada
Dos números flotantes separados por un espacio asociados a las coordenadas x, y.
No ocurrirá nunca que los dos sean cero simultáneamente.
Salida
Dos números flotantes separados por un espacio. El primero será la coordenada radial y el segundo
el ángulo expresado en grados y como un elemento del intervalo .
Ejemplo de entrada 1
1.0 0.0
Ejemplo de salida 1
1.000000 0.000000
Ejemplo de entrada 2
2.0 2.0
Ejemplo de salida 2
2.828427 45.000000
Ejemplo de entrada 3
-2.0 3.0
Ejemplo de salida 3
3.605551 123.690068
Ejemplo de entrada 4
-4.0 -1.5
Ejemplo de salida 4
4.272002 200.556045
Ejemplo de entrada 5
5.0 -1.1
Ejemplo de salida 5
5.119570 347.592581
Comentarios