Ce face atan2
atan2(y, x) calculează unghiul segmentului de la origine la punctul (x, y). Atenție la ordine: întâi y, apoi x.
Spre deosebire de atan(y / x), atan2 știe în ce cadran se află punctul (după semnele lui x și y) și funcționează și când x este 0. Rezultatul este între -π și π; înmulțește cu 180 / pi pentru grade.
Parametri
| Parametru | Descriere |
|---|---|
y |
Coordonata verticală. |
x |
Coordonata orizontală. |
Ce returnează
Unghiul în radiani, ca double, în intervalul [-π, π].
Exemple
Exemplul 1: Unghiul în fiecare cadran
atan simplu ar da același rezultat pentru (1, 1) și (-1, -1); atan2 le deosebește.
import 'dart:math';
void main() {
final puncte = [(1, 1), (-1, 1), (-1, -1), (1, -1), (0, 5)];
for (final (x, y) in puncte) {
final grade = atan2(y, x) * 180 / pi;
print('($x, $y) -> ${grade.toStringAsFixed(1)}°');
}
}
Rezultat
(1, 1) -> 45.0°
(-1, 1) -> 135.0°
(-1, -1) -> -135.0°
(1, -1) -> -45.0°
(0, 5) -> 90.0°
Exemplul 2: Direcția de la Iași la Cluj pe o hartă
Pe o hartă plată cu coordonate în km (est = x, nord = y), calculăm direcția de deplasare.
import 'dart:math';
void main() {
const iasi = (x: 400.0, y: 300.0);
const cluj = (x: 100.0, y: 230.0);
final dx = cluj.x - iasi.x;
final dy = cluj.y - iasi.y;
final grade = atan2(dy, dx) * 180 / pi;
print('Direcție: ${grade.toStringAsFixed(1)}° față de est');
print('Distanță: ${sqrt(dx * dx + dy * dy).toStringAsFixed(0)} km');
}
Rezultat
Direcție: -166.9° față de est
Distanță: 308 km
Greșeli frecvente
- Inversezi argumentele:
atan2(x, y)dă alt unghi. Ordinea corectă esteatan2(y, x). - Uiți că rezultatul este în radiani și îl afișezi ca grade.
Comenzi înrudite
sin: Funcțiile trigonometrice sin, cos și tan; unghiul se dă în radiani, nu în grade.pi: Constantele matematice din dart:math: pi, e, sqrt2, ln10 (și ln2, log2e, log10e, sqrt1_2).Point.distanceTo: distanceTo dă distanța în linie dreaptă până la alt punct; magnitude este distanța de la origine (0, 0).