Ответ 1
Поскольку я считаю, что это связано с arctan (y/x), поэтому y отображается сверху.
Вот хорошая ссылка, немного об этом говорит: Углы и направления
В C функция atan2 имеет следующую подпись:
double atan2( double y, double x );
Другие языки делают это также. Это единственная из известных мне функций, которая принимает аргументы в порядке Y, X, а не в порядке X, Y, и регулярно меня облажает, потому что, когда я думаю о координатах, я думаю (X, Y).
Кто-нибудь знает, почему соглашение о порядке аргументов atan2 такое?
Поскольку я считаю, что это связано с arctan (y/x), поэтому y отображается сверху.
Вот хорошая ссылка, немного об этом говорит: Углы и направления
Мое предположение всегда заключалось в том, что это происходит из-за определения триггера, т.е. что
tan(theta) = opposite / adjacent
При работе с каноническим углом от начала координат противоположное всегда Y и смежное всегда X, поэтому:
atan2(opposite, adjacent) = theta
Т.е., это было сделано таким образом, чтобы не было упорядочения путаницы в отношении математического определения.
Предположим, что треугольник прямоугольника с его противоположной стороной называется y, смежная сторона называется x:
tan (angle) = y/x
arctan (tan (angle)) = arctan (y/x)
Это потому, что в школе мнемоника для вычисления градиента возрастает над пробегом, или, другими словами, dy/dx или более кратко y/x.
И этот порядок проник в аргументы арктангентных функций.
Итак, это исторический артефакт. Для меня это зависит от того, что я думаю
о том, когда я использую atan2
. Если я думаю о различиях, я правильно понимаю
и если я думаю о координатных парах, я ошибаюсь.
Порядок atan2 (X, Y) в Excel, поэтому я думаю, что обратный порядок - это программирование. atan (Y/X) можно легко изменить на atan2 (Y, X), поставив '2' между 'n' и '(', и заменив '/' на ',', только 2 операции. Обратный порядок занял бы 4 операции, а некоторые операции были бы более сложными (вырезать и вставить).
Я часто работаю над математикой в Excel, затем портирую ее на .NET, поэтому иногда зацикливаюсь на atan2. Было бы лучше, если бы atan2 мог быть стандартизирован тем или иным способом.