Point în Dart

Un punct în plan, cu coordonatele x și y; suportă adunare, scădere și comparare cu ==.

Sintaxă
import 'dart:math';

const Point(T x, T y)
final T x
final T y

Ce face Point

Point<T extends num> din dart:math reprezintă un punct 2D cu coordonatele x și y, ambele final (nu se pot schimba după creare). Tipul se deduce: Point(3, 4) este Point<int>, Point(1.5, 2) este Point<num>.

Punctele se pot aduna (+) și scădea (-) ca vectori, se pot înmulți cu un număr (*), iar == compară coordonatele, nu obiectele. toString() afișează Point(x, y).

Pentru distanțe vezi distanceTo și magnitude. În cod nou poți folosi și un record (x: 1, y: 2), dar Point are deja operațiile gata scrise.

Parametri

Parametru Descriere
x, y Coordonatele punctului.

Exemple

Exemplul 1: Creare, citire și operații

import 'dart:math';

void main() {
  const a = Point(3, 4);
  const b = Point(1, 2);
  print(a);
  print('x = ${a.x}, y = ${a.y}');
  print(a + b);
  print(a - b);
  print(a * 2);
  print(a == const Point(3, 4));
}

Rezultat

Point(3, 4)
x = 3, y = 4
Point(4, 6)
Point(2, 2)
Point(6, 8)
true

Exemplul 2: Mutarea unui personaj pe o hartă

Fiecare pas adună un vector de deplasare la poziția curentă. Punctul nu se modifică: se creează unul nou.

import 'dart:math';

void main() {
  var pozitie = const Point(0, 0);
  final pasi = {'sus': const Point(0, 1), 'dreapta': const Point(1, 0)};
  for (final directie in ['sus', 'sus', 'dreapta', 'sus']) {
    pozitie += pasi[directie]!;
    print('$directie -> (${pozitie.x}, ${pozitie.y})');
  }
}

Rezultat

sus -> (0, 1)
sus -> (0, 2)
dreapta -> (1, 2)
sus -> (1, 3)

Greșeli frecvente

  • Încerci p.x = 5. Coordonatele sunt final; creează un punct nou: p = Point(5, p.y).
  • Amesteci int și double între puncte: Point(1, 2) + Point(0.5, 0.5) nu compilează, pentru că tipurile Point<int> și Point<double> diferă.

Comenzi înrudite

  • Point.distanceTo: distanceTo dă distanța în linie dreaptă până la alt punct; magnitude este distanța de la origine (0, 0).
  • Rectangle: Un dreptunghi cu laturile paralele cu axele, dat prin colțul stânga-sus, lățime (width) și înălțime (height).
  • atan2: Returnează unghiul (în radiani, între -π și π) al punctului (x, y) față de axa orizontală.