In trigonometria, la funzione atan2 a due argomenti è una variante della funzione arco tangente . Per tutti i veri argomenti x e y che non è zero, è l'angolo in radianti tra la parte positiva della x- asse di un piano, e il punto di questo piano di coordinate ( x , y ) . Questo angolo è positivo per gli angoli in senso antiorario noto come senso antiorario (semipiano superiore, y > 0 ) e negativo nell'altro (semipiano inferiore, y <0 ).
L'atan2 è stato introdotto per la prima volta nei linguaggi di programmazione per computer , ma ora è comunemente usato anche in altri campi della scienza e dell'ingegneria. È vecchio almeno quanto il linguaggio di programmazione Fortran e ora si trova nella maggior parte degli altri linguaggi.
In termini matematici, atan2 restituisce il valore principale (en) della funzione argomento applicata al numero complesso . In entrambi i casi . Il risultato può variare di 2π senza alcun impatto sull'angolo, ma per garantirne l'unicità, utilizziamo il valore principale nell'intervallo ] –π, π] , cioè .
La funzione atan2 viene utilizzato in molte applicazioni che coinvolgono vettori di spazio euclideo , come trovare la direzione da un punto all'altro. Uno degli usi principali è la conversione di matrici di rotazione in angoli di Eulero , per ruotare rappresentazioni grafiche di computer.
In alcuni linguaggi per computer, l'ordine dei parametri è invertito o la funzione è denominata in modo diverso. Sulle calcolatrici scientifiche, il risultato della funzione è spesso la conversione di coordinate rettangolari ( x , y ) in coordinate polari .
La funzione arco tangente a argomento singolo non distingue tra direzioni diametralmente opposte. Ad esempio, l'angolo in senso antiorario dall'asse x al vettore (1, 1), calcolato nel solito modo come arctan (1/1), fornisce π / 4 (radianti) o 45 °. Allo stesso modo, l'angolo tra l'asse x fino al vettore (-1, -1), con lo stesso metodo arctan (-1 / -1), fornisce ancora π / 4 , mentre la risposta chiaramente attesa sarebbe piuttosto −3π / 4 o −135 °.
La funzione "atan2" tiene conto del segno delle due componenti del vettore e colloca l'angolo nel quadrante corretto . Quindi, e .
Inoltre, il metodo usuale non funziona per un angolo di ± π / 2 (radianti) o ± 90 °. Ad esempio, un tentativo di trovare l'angolo tra l'asse x e il vettore (0, 1) richiede la valutazione di arctan (1/0), che fallisce a causa della divisione per zero, mentre atan2 (1, 0) dà il risposta corretta π / 2 .
Quando i calcoli sono eseguiti a mano, le correzioni di quadrante necessarie e la gestione delle eccezioni possono essere eseguite mediante osservazione, ma in un programma per computer è estremamente utile avere un'unica funzione che fornisce sempre un risultato corretto e univoco.
Per y ≠ 0 :
dove φ è l'angolo compreso in [0, π / 2 [ tale che e sgn è la funzione segno .
E:
Appunti:
Tuttavia, questa espressione dovrebbe essere più adatta ad un uso simbolico rispetto alla definizione precedente, ed è comunque totalmente inadatta all'uso in virgola mobile ; la divisione causa un overflow vicino alla parte negativa dell'asse x e fornisce un NaN o un errore per atan2 (0,0).
La libreria matematica gratuita FDLIBM disponibile in netlib mostra nel suo codice sorgente come implementare atan2 con la gestione dei valori speciali IEEE.
Per i sistemi senza moltiplicatore hardware, la funzione atan2può essere implementata digitalmente in modo affidabile con il metodo CORDIC . In questo tipo di caso, probabilmente sarà meglio calcolare in atan(y)base a atan2(y,1).
Poiché la funzione atan2 è una funzione di 2 variabili, ha due derivate parziali. Nei punti in cui esistono queste derivate, atan2 è, fino a una costante, uguale ad arctan (y / x).
Per x > 0 o y ≠ 0 ,
DimostrazionePer la derivata parziale rispetto a x abbiamo:
Per la derivata parziale rispetto a y abbiamo:
Quindi il gradiente di atan2 è dato da:
Il diagramma sottostante mostra i valori presi da atan2 su punti notevoli del cerchio trigonometrico . I valori, in radianti, sono scritti in blu all'interno del cerchio. I quattro punti (1.0), (0.1), (-1.0) e (0, -1) sono scritti fuori dal cerchio. Notare che l'ordine degli argomenti x , y è invertito; la funzione atan2 ( y , x ) fornisce l'angolo corrispondente al punto ( x , y ).
Il diagramma seguente mostra i valori presi da atan2 per i punti del cerchio trigonometrico. Sull'asse x , abbiamo gli argomenti dei punti. Partono da 0 (punto (1, 0)) e procedono in senso antiorario attraverso i punti:
fino a (1, 0) che ha per argomento 0 = 2π modulo 2π .
In questo diagramma, possiamo vedere chiaramente la discontinuità della funzione atan2. Quando un punto z attraversa la parte negativa dell'asse reale - per esempio va da (0, 1) a (0, -1) attraverso (-1, 0) - suo argomento dovrebbe andare da π / 2 a 3π / 2 tramite π . Ma il valore della funzione atan2 (valore principale dell'argomento) va da π / 2 a π , quindi salta a –π (discontinuità), per andare a –π / 2 .
Di seguito è riportata una vista 3D che mostra la differenza tra atan2 ( y , x ) e arctan ( y / x ).