Почему аргументы atan2 Y, X, а не X, Y? - PullRequest
25 голосов
/ 25 июня 2009

В C функция atan2 имеет следующую подпись:

double atan2( double y, double x );

Другие языки тоже это делают. Это единственная из известных мне функций, которая принимает аргументы в порядке Y, X, а не в X, Y, и регулярно меня облажает, потому что когда я думаю о координатах, я думаю (X, Y).

Кто-нибудь знает, почему соглашение о порядке аргументов atan2 так?

Ответы [ 4 ]

26 голосов
/ 25 июня 2009

Поскольку я считаю, что оно связано с арктаном (у / х), поэтому у появляется сверху.

Вот хорошая ссылка, немного рассказывающая об этом: Углы и направления

12 голосов
/ 25 июня 2009

Я всегда предполагал, что это из-за определения триггера, то есть, что

tan(theta) = opposite / adjacent

При работе с каноническим углом от начала координат противоположным всегда является Y, а смежным всегда является X, поэтому:

atan2(opposite, adjacent) = theta

Т.е. это было сделано таким образом, чтобы не было путаницы в отношении математического определения.

1 голос
/ 25 июня 2009

Это потому, что в школе мнемоника для вычисления градиента
это повышение за пробег , или, другими словами, dy / dx, или более кратко y / x.

И этот порядок проник в аргументы арктангенсных функций.

Так что это исторический артефакт. Для меня это зависит от того, что я думаю
о том, когда я использую atan2. Если я думаю о дифференциалах, я правильно понимаю
и если я думаю о парах координат, я ошибаюсь.

1 голос
/ 25 июня 2009

Предположим, что прямоугольник с противоположной стороной называется y, а смежная сторона называется x:

загар (угол) = у / х

Арктан (загар (угол)) = Арктан (г / х)

...