Aller au contenu

atan2

Un article de Wikipédia, l'encyclopédie libre.

Courbe deen fonction de.

Entrigonométrie,la fonctionatan2à deuxargumentsest une variante de la fonctionarc tangente.Pour tous argumentsréelsxetynon nuls,est l'angle enradiansentre la partie positive de l'axe des abscisses d'un plan, et le point de ce plan decoordonnées(x,y).Cet angle est positif pour les angles dans le sensanti-horaireditsens trigonométrique(demi-plansupérieur,y> 0) et négatif dans l'autre (demi-plan inférieur,y< 0).

La fonction atan2 fut d'abord introduite dans leslangagesdeprogrammation informatique,mais elle est désormais aussi couramment utilisée dans d'autres domaines de la science et de l'ingénierie. Elle est au moins aussi ancienne que le langage de programmationFortranet on la trouve maintenant dans la plupart des autres langages.

En termesmathématiques,atan2 retourne ladétermination principalede lafonction argumentappliquée aunombre complexe.Soit.Le résultat pourrait varier desans aucun impact sur l'angle, mais pour garantir son unicité, on utilise la valeur principale dans l'intervalle]–π,π],soit.

La fonction atan2 est utilisée dans beaucoup d'applications impliquant desvecteursde l'espace euclidien,comme pour trouver la direction d'un point à un autre. Une des utilisations principales est la conversion desmatrices de rotationenangles d'Euler,pour faire pivoter des représentations graphiques informatiques.

Dans certains langages informatiques, l'ordre des paramètres est inversé, ou bien la fonction est dénommée différemment. Sur les calculatrices scientifiques, le résultat de la fonction est souvent issu de la conversion des coordonnées rectangulaires(x,y)encoordonnées polaires.

La fonction arc tangente à un seul argument ne fait pas la différence entre des directions diamétralement opposées[1].Par exemple, l'angle anti-horaire à partir de l'axe desxjusqu'au vecteur (1, 1), calculé de la façon habituelle comme arctan(1/1), donneπ/4(radians), ou 45°. De la même façon, l'angle entre l'axe desxjusqu'au vecteur (-1, -1), avec la même méthode arctan(-1/-1), donne encoreπ/4,alors que la réponse clairement attendue serait plutôt−3π/4,ou −135°.

La fonction "atan2" prend en compte le signe des deux composantes du vecteur, et place l'angle dans le bonquadrant.Ainsi,et.

De plus, la méthode habituelle ne fonctionne pas dans le cas d'un angle de± π/2(radians) ou ± 90°. Par exemple, une tentative pour trouver l'angle entre l'axe desxet le vecteur (0, 1) nécessite l'évaluation de arctan(1/0), qui échoue à cause de ladivision par zéro,alors que atan2(1, 0) donne la bonne réponseπ/2.

Quand les calculs sont effectués à la main, les corrections de quadrant nécessaires et la gestion des exceptions peuvent être faites par observation, mais dans un programme informatique, il est extrêmement utile de disposer d'une fonction unique qui délivre toujours un résultat correct non ambigu.

Poury≠ 0:

φest l'angle compris dans[0,π/2[tel queetsgnest lafonction signe.

Et:

Notes:

.

Cependant, cette expression devrait être plus adaptée à un usage symbolique que la définition précédente, et est néanmoins totalement inadaptée à l'utilisation envirgule flottante;la division provoque un débordement au voisinage de la partie négative de l'axe des x, et donne un NaN ou une erreur pour atan2(0,0).

  • Cela donne des résultats compris dans]-π, π],qui peuvent être translatés dans[0,2π[en ajoutantaux valeurs négatives.
  • Traditionnellement, atan2(0,0) est non défini.
    • La fonction C, et la plupart des autres implémentations informatiques, sont conçues pour les efforts de transformations des coordonnées cartésiennes en polaires, et donc définissent toujours atan2(0,0). Dans les implémentations sanszéro signé,ou lorsque sont donnés des arguments zéro positif, le résultat est normalement défini à 0. La valeur rendue sera toujours comprise dans]-π,π]plutôt que de sortir en erreur ou de retournerNaN( "Not a Number", cad "Pas un Nombre" ).
    • Les systèmes gérant les mathématiques symboliques devraient normalement retourner une valeur non définie pour atan2(0,0) ou bien signaler qu'une anomalie s'est produite.
  • Pour les systèmes comme lavirgule flottante IEEE 754qui savent gérer lezéro signé,lesinfinisouNaN,il est habituel d'implémenter des extensions capables d'étendre les résultats possibles pour inclure -π et -0. Ces dernières pourraient aussi retourner NaN ou lever uneexceptionlorsqu'un des arguments reçus est un NaN.

La bibliothèque mathématique libre FDLIBM disponible dansnetlibmontre dans soncode sourcecomment implémenter atan2 avec une gestion de valeurs spéciales IEEE.

Pour les systèmes ne disposant pas d'un multiplicateur matériel, la fonctionatan2peut être implémentée numériquement d'une manière fiable avec la méthodeCORDIC.Dans ce genre de cas, il sera surement préférable de calculeratan(y)paratan2(y,1).

Comme la fonction atan2 est fonction de 2 variables, elle possède deux dérivées partielles. Aux points où ces dérivées existent, atan2 est, à une constante près, égale à arctan(y/x).

Pourx> 0ouy≠ 0,

Donc le gradient de atan2 est donné par:

Illustrations

[modifier|modifier le code]

Le diagramme ci-dessous présente les valeurs prises par atan2 sur des points remarquables ducercle trigonométrique.Les valeurs, en radians, sont inscrites en bleu à l'intérieur du cercle. Les quatre points (1,0), (0,1), (-1,0), et (0,-1) sont notés à l'extérieur du cercle. On notera que l'ordre desargumentsx,yest inversé; la fonction atan2(y,x) donne l'angle correspondant au point (x,y).

Représentation sur le cercle trigonométrique de la fonction atan2.

Le schéma suivant montre les valeurs prises par atan2 pour les points du cercle trigonométrique. Sur l'axe desx,on a lesargumentsdes points. Ils partent de 0 (point (1, 0)) et vont dans le sens trigonométrique en passant par les points:

  • (0, 1) qui a pour argumentπ/2en radians,
  • (–1, 0) qui a pour argumentπ,
  • (0, –1) qui a pour argument3π/2,

jusqu'à (1, 0) qui a pour argument 0 =modulo.

Sur ce schéma, on peut voir clairement apparaitre ladiscontinuitéde la fonction atan2. Quand un pointztraverse la partie négative de l'axe réel — par exemple va de (0, 1) à (0, –1) en passant par (–1, 0) — son argument devrait aller deπ/2à3π/2en passant parπ.Mais la valeur de la fonction atan2 (valeur principale de l'argument) va deπ/2àπ,puis saute à–π(discontinuité), pour aller vers–π/2.

Ci-dessous une vue 3D montrant la différence entre atan2(y,x) et arctan(y/x).

(en)Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé«atan2»(voir la liste des auteurs).
  1. L'ensemble de ses valeurs est l'intervalleet non pas l'intervalle

Liens externes

[modifier|modifier le code]