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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top