Найдите полярный угол точки.
Вход. Два целых числа – декартовы координаты
точки, не совпадающей с началом координат. Входные числа не превышают по модулю
10000.
Выход. Одно
действительное число – величина полярного угла входной точки в радианах,
которая находится в интервале [0; 2π). Ответ округлить с точностью до 6
знаков после запятой.
Пример входа |
Пример выхода |
2 3 |
0.982794 |
геометрия
Полярная система
координат – двухмерная система координат, в
которой каждая точка на плоскости однозначно определяется двумя числами: полярным углом φ (который еще называют азимут или
фазовый угол) и полярным радиусом r. Координата r соответствует расстоянию от точки
до центра, или полюса системы координат, а координата φ равна углу, отсчитываемого в
направлении против часовой стрелки от луча через 0° (иногда называемому
полярной осью системы координат).
Пусть точка P имеет декартовы координаты (x, y) и полярные координаты (r, φ). Тогда формулы преобразования из полярной системы координат в
декартову имеют вид:
Функция atan2(double y, double x) вычисляет
значение арктангенса y/x в пределах (-π; π]. Если x = 0, или оба параметра равны нулю, то функция возвращает 0. В
задаче полярный угол следует вывести в интервале [0; 2π). Для
этого в случае отрицательного значения функции atan2 к результату следует прибавить 2π.
Вычисляем
полярный угол точки при помощи функции atan2. Если результатом выполнения функции atan2 будет
отрицательное значение, то к нему следует прибавить 2π, так как ответ
должен находиться в интервале [0; 2π).
scanf("%lf %lf",&a,&b);
res
= atan2(b,a);
if
(res < 0) res += 2*PI;
printf("%.6lf\n",res);
Реализация при помощи класса
#include <stdio.h>
#include <math.h>
#define PI acos(-1.0)
class
Point
{
private:
double x, y;
public:
Point(double
x = 0, double y = 0) : x(x), y(y) {}
void
ReadPoint(void)
{
scanf("%lf
%lf",&x,&y);
}
double
GetPolarAngle()
{
double res
= atan2(y,x);
if (res
< 0) res += 2*PI;
return res;
}
};
int
main(void)
{
Point p;
p.ReadPoint();
printf("%.6lf\n",p.GetPolarAngle());
return 0;
}
Java реализация
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
double a = con.nextDouble();
double b = con.nextDouble();
double res = Math.atan2(b,a);
if (res < 0) res += 2 * Math.PI;
System.out.println(res);
con.close();
}
}
Python реализация
import math
a, b = map(float,input().split())
res = math.atan2(b,a)
if (res < 0) :
res += 2 * math.pi
print("%.6f"
%res)