Ce face Point.distanceTo
a.distanceTo(b) calculează distanța euclidiană (în linie dreaptă) dintre două puncte: √((x₂−x₁)² + (y₂−y₁)²). Rezultatul este întotdeauna double.
magnitude este un getter (fără paranteze) care dă lungimea vectorului de la (0, 0) la punct, adică p.distanceTo(Point(0, 0)). Mai există squaredDistanceTo, care nu calculează rădăcina: e mai rapid când doar compari distanțe.
Parametri
| Parametru | Descriere |
|---|---|
other |
Celălalt punct (de același tip). |
Ce returnează
Distanța, ca double.
Exemple
Exemplul 1: Distanța între două puncte
import 'dart:math';
void main() {
const a = Point(1, 1);
const b = Point(4, 5);
print(a.distanceTo(b));
print(b.distanceTo(a));
print(const Point(3, 4).magnitude);
print(a.squaredDistanceTo(b));
}
Rezultat
5.0
5.0
5.0
25
Exemplul 2: Cel mai apropiat magazin
Coordonatele sunt în km pe harta orașului; alegem magazinul cu distanța cea mai mică.
import 'dart:math';
void main() {
const acasa = Point(2.0, 3.0);
const magazine = {
'Centru': Point(5.0, 7.0),
'Tătărași': Point(1.0, 1.0),
'Copou': Point(6.0, 2.0),
};
String? cel;
var minim = double.infinity;
magazine.forEach((nume, loc) {
final d = acasa.distanceTo(loc);
print('$nume: ${d.toStringAsFixed(2)} km');
if (d < minim) {
minim = d;
cel = nume;
}
});
print('Cel mai aproape: $cel');
}
Rezultat
Centru: 5.00 km
Tătărași: 2.24 km
Copou: 4.12 km
Cel mai aproape: Tătărași
Greșeli frecvente
- Scrii
p.magnitude()cu paranteze. Este getter:p.magnitude. - Folosești distanța în linie dreaptă pentru trasee pe străzi. Pe o rețea de străzi „în pătrat” distanța reală este
|dx| + |dy|.
Comenzi înrudite
Point: Un punct în plan, cu coordonatele x și y; suportă adunare, scădere și comparare cu ==.sqrt: Calculează rădăcina pătrată a unui număr și returnează mereu un double; pentru numere negative dă NaN.atan2: Returnează unghiul (în radiani, între -π și π) al punctului (x, y) față de axa orizontală.