Введение

Арктангентная функция с двумя аргументами

В вычислительной технике и математике функция atan2 является арктангенсом с двумя аргументами. По определению, atan2(y, x) – это мера угла (в радианах, где -π ≤ угол ≤ π) между положительной осью X и лучом, идущим из начала координат к точке (x, y) в декартовой плоскости. Эквивалентно, atan2(y, x) является аргументом (также называемым фазой или углом) комплексного числа x + iy.

Функция впервые появилась в языке программирования Fortran в 1961 году. Первоначально она была предназначена для возврата правильного и однозначного значения для угла θ при преобразовании из декартовых координат (x, y) в полярные координаты (r, θ). Если x > 0 и y > 0, то θ = arctan(y/x). Однако, когда x < 0, угол arctan(y/x) является диаметрально противоположным желаемому углу, и ±π (половина оборота) необходимо добавить, чтобы поместить точку в правильный квадрант. Использование функции atan2 избавляет от этой коррекции, упрощая код и математические формулы.

Мотивация

Обычная функция арктангенса возвращает значения углов только в интервале [-π/2, π/2], и при вызове для определения угла между осью x и произвольным вектором на декартовой плоскости, нет простого способа указать направление в левой полуплоскости (то есть, для точки с x < 0). Диаметрально противоположные углы имеют одинаковый тангенс, поскольку тангенс сам по себе недостаточен для однозначного определения угла. Для определения угла с использованием функции арктангенса для заданной точки или вектора, математические формулы или компьютерный код должны обрабатывать несколько случаев: как минимум один для положительных значений x, и один для отрицательных значений x, а иногда и дополнительные случаи, когда x равен нулю или одна из координат равна нулю. Вычисление углов и преобразование декартовых координат в полярные – распространенная задача в научных вычислениях, и такой код избыточен и склонен к ошибкам. Для решения этой проблемы языки программирования ввели функцию atan2, по крайней мере, еще в языке Fortran IV 1960-х годов. Функция atan2(y, x) возвращает угол между осью x и лучом, идущим из начала координат к точке (x, y) в любой точке декартовой плоскости. Знаки x и y используются для определения квадранта результата и выбора правильной ветви многозначной функции Arctan(y/x). Функция atan2 полезна во многих приложениях, связанных с евклидовыми векторами, таких как определение направления от одной точки к другой или преобразование матрицы вращения в углы Эйлера. Функция atan2 теперь включена во многие другие языки программирования и часто встречается в математических формулах в науке и технике.

Порядок аргументов

В 1961 году Фортран представил функцию atan2 с порядком аргументов, позволяющим вычислять аргумент (фазовый угол) комплексного числа как . Это соответствует порядку слева направо в дроби, записанной так, что для положительных значений . Однако это противоположно общепринятому порядку компонентов для комплексных чисел, например, при записи их в виде координат. См. раздел «Определение и вычисление». Некоторые другие языки программирования (см. § Реализации функции в распространенных языках программирования) выбрали обратный порядок. Например, Microsoft Excel использует , OpenOffice Calc использует , а Mathematica использует, при вызове с одним аргументом используя функцию arctangent с одним аргументом по умолчанию.

Иллюстрации

На рисунке показаны значения функции atan2 вдоль выбранных лучей, исходящих из начала координат, обозначенных на единичной окружности. Значения в радианах указаны внутри окружности. На диаграмме используется стандартное математическое соглашение, согласно которому углы отсчитываются против часовой стрелки от нуля вдоль луча, направленного вправо. Обратите внимание, что порядок аргументов изменен: функция atan2(y, x) вычисляет угол, соответствующий точке (x, y). На этом рисунке показаны значения функции atan2 вместе со значениями арктангенса. Обе функции нечетные и периодические с периодами π и π, соответственно, и поэтому могут быть легко расширены на любую область действительных значений. Четко видны разрывы функции atan2 на -π и π, а функции арктангенса на -π/2 и π/2. Две фигуры ниже демонстрируют трехмерные графики функций atan2(y, x) и арктангенса на области плоскости. Обратите внимание, что для atan2(y, x) лучи в плоскости XY, исходящие из начала координат, имеют постоянные значения, а для арктангенса линии в плоскости XY, проходящие через начало координат, имеют постоянные значения. При x > 0 обе диаграммы показывают одинаковые значения.