Подтвердить что ты не робот

Почему аргументы для atan2 Y, X, а не X, Y?

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

double atan2( double y, double x );

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

Мое предположение всегда заключалось в том, что это происходит из-за определения триггера, т.е. что

tan(theta) = opposite / adjacent

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

atan2(opposite, adjacent) = theta

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

Ответ 3

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

tan (angle) = y/x

arctan (tan (angle)) = arctan (y/x)

Ответ 4

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

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

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

Ответ 5

Порядок atan2 (X, Y) в Excel, поэтому я думаю, что обратный порядок - это программирование. atan (Y/X) можно легко изменить на atan2 (Y, X), поставив '2' между 'n' и '(', и заменив '/' на ',', только 2 операции. Обратный порядок занял бы 4 операции, а некоторые операции были бы более сложными (вырезать и вставить).

Я часто работаю над математикой в Excel, затем портирую ее на .NET, поэтому иногда зацикливаюсь на atan2. Было бы лучше, если бы atan2 мог быть стандартизирован тем или иным способом.