Pourquoi les arguments pour atan2 Y, X plutôt que X, Y?
-
20-08-2019 - |
Question
En C, la fonction atan2 a la signature suivante:
double atan2( double y, double x );
D'autres langues le font aussi. C’est la seule fonction que je connaisse qui prenne ses arguments dans l’ordre Y, X plutôt que X, Y et me bousille régulièrement car lorsque je pense coordonnées, je pense (X, Y).
Quelqu'un sait-il pourquoi la convention d'argumentation d'Atan2 est la suivante?
La solution
Parce que je crois que c'est lié à arctan (y / x), donc y apparaît en haut.
Voici un joli lien qui en parle un peu: Angles et indications
Autres conseils
Mon hypothèse a toujours été que cela est dû à la définition de trig, c'est-à-dire que
tan(theta) = opposite / adjacent
Lorsque vous utilisez l'angle canonique de l'origine, le contraire est toujours Y et le plus proche est toujours X, ainsi:
atan2(opposite, adjacent) = theta
C'est-à-dire que c'était fait ainsi, il n'y a donc pas de confusion en ce qui concerne la définition mathématique.
Supposons un triangle rectangle avec son côté opposé appelé y, un côté adjacent appelé x:
tan (angle) = y / x
arctan (tan (angle)) = arctan (y / x)
C'est parce qu'à l'école, le mnémonique pour calculer le gradient
est-ce que monte sur , ou en d'autres termes dy / dx, ou plus brièvement y / x.
Et cet ordre s'est faufilé dans les arguments des fonctions arctangentes.
C'est donc un artefact historique. Pour moi, cela dépend de ce que je pense.
à propos de quand j'utilise atan2
. Si je pense aux différentiels, je le fais correctement
et si je pense aux paires de coordonnées, je me trompe.