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

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

double atan2( double y, double x );

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

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

4 ответов


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

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


мое предположение всегда было, что это из-за определения триггера, т. е. что

tan(theta) = opposite / adjacent

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

atan2(opposite, adjacent) = theta

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


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

tan (угол) = y / x

равенства arctg(тангенс(угла)) = равенства arctg(у/Х)


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

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

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