Point.distanceTo în Dart

distanceTo dă distanța în linie dreaptă până la alt punct; magnitude este distanța de la origine (0, 0).

Sintaxă
double distanceTo(Point<T> other)
double get magnitude

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ă.