Conversión a coordenadas polares


Enviar solución

Puntos: 5
Tiempo límite: 1.0s
Límite de memoria: 64M

Autor:
Tipo de problema

Una forma alternativa al sistema cartesiano (x,y) de describir la posición de los puntos de un plano son las coordenadas polares, en las que se indica la distancia al centro, r, y el ángulo (con signo) que forma respecto al semieje positivo de abscisas, \varphi.

conversion

Pasar de coordenadas rectangulares a cartesianas es muy sencillo. Usando trigonometría resulta \displaystyle x=r\cos\varphi\,, \qquad [1] \displaystyle y=r\sin\varphi\,. \qquad [2]

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) \displaystyle r=\sqrt{x^2+y^2}\,, \qquad [3] \displaystyle \tan \varphi=\frac{y}{x}\,.\qquad [4]

Lo único que falta para resolver el problema es invertir la segunda expresión para obtener \varphi. Sería tentador indicar \displaystyle \varphi=\arctan{\frac{y}{x}}\,(!)\,. \quad [5] pero esto no daría la solución correcta para todos los valores de (x,y). 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 \displaystyle \varphi={\begin{cases}\arctan \left({\frac {y}{x}}\right)&{\mbox{si }}x>0\\\arctan \left({\frac {y}{x}}\right)+\pi &{\mbox{si }}x<0{\mbox{ y }}y\geq 0\\\arctan \left({\frac {y}{x}}\right)-\pi &{\mbox{si }}x<0{\mbox{ y }}y<0\\{\frac {\pi }{2}}&{\mbox{si  }}x=0{\mbox{ y }}y>0\\-{\frac {\pi }{2}}&{\mbox{si }}x=0{\mbox{ y }}y<0\\{\text{indefinido}}&{\mbox{si }}x=0{\mbox{ y }}y=0.\end{cases}}\qquad [6].

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 \left[0, 360\right). 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 \left[0, 360\right).

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

No hay comentarios por el momento.