Введение
Арктангентная функция с двумя аргументами
In computing and mathematics, the function atan2 is the 2 argument arctangent. By definition, is the angle measure (in radians, with ) between the positive axis and the ray from the origin to the point in the Cartesian plane. Equivalently, is the argument (also called phase or angle) of the complex number
The function first appeared in the programming language Fortran in 1961. It was originally intended to return a correct and unambiguous value for the angle θ in converting from Cartesian coordinates (x, y) to polar coordinates (r, θ). If and , then and
If x > 0, the desired angle measure is However, when x < 0, the angle is diametrically opposite the desired angle, and ± (a half turn) must be added to place the point in the correct quadrant. Using the function does away with this correction, simplifying code and mathematical formulas.
В вычислительной технике и математике функция atan2 является арктангенсом с двумя аргументами. По определению, atan2(y, x) – это мера угла (в радианах, где -π ≤ угол ≤ π) между положительной осью X и лучом, идущим из начала координат к точке (x, y) в декартовой плоскости. Эквивалентно, atan2(y, x) является аргументом (также называемым фазой или углом) комплексного числа x + iy.
In computing and mathematics, the function atan2 is the 2 argument arctangent. By definition, is the angle measure (in radians, with ) between the positive axis and the ray from the origin to the point in the Cartesian plane. Equivalently, is the argument (also called phase or angle) of the complex number
The function first appeared in the programming language Fortran in 1961. It was originally intended to return a correct and unambiguous value for the angle θ in converting from Cartesian coordinates (x, y) to polar coordinates (r, θ). If and , then and
If x > 0, the desired angle measure is However, when x < 0, the angle is diametrically opposite the desired angle, and ± (a half turn) must be added to place the point in the correct quadrant. Using the function does away with this correction, simplifying code and mathematical formulas.
Функция впервые появилась в языке программирования Fortran в 1961 году. Первоначально она была предназначена для возврата правильного и однозначного значения для угла θ при преобразовании из декартовых координат (x, y) в полярные координаты (r, θ). Если x > 0 и y > 0, то θ = arctan(y/x). Однако, когда x < 0, угол arctan(y/x) является диаметрально противоположным желаемому углу, и ±π (половина оборота) необходимо добавить, чтобы поместить точку в правильный квадрант. Использование функции atan2 избавляет от этой коррекции, упрощая код и математические формулы.
In computing and mathematics, the function atan2 is the 2 argument arctangent. By definition, is the angle measure (in radians, with ) between the positive axis and the ray from the origin to the point in the Cartesian plane. Equivalently, is the argument (also called phase or angle) of the complex number
The function first appeared in the programming language Fortran in 1961. It was originally intended to return a correct and unambiguous value for the angle θ in converting from Cartesian coordinates (x, y) to polar coordinates (r, θ). If and , then and
If x > 0, the desired angle measure is However, when x < 0, the angle is diametrically opposite the desired angle, and ± (a half turn) must be added to place the point in the correct quadrant. Using the function does away with this correction, simplifying code and mathematical formulas.
Мотивация
Обычная функция арктангенса возвращает значения углов только в интервале [-π/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 обе диаграммы показывают одинаковые значения.
The two figures below show 3D views of respectively atan2(y, x) and over a region of the plane. Note that for atan2(y, x), rays in the X/Y plane emanating from the origin have constant values, but for lines in the X/Y plane passing through the origin have constant values. For x > 0, the two diagrams give identical values.