Rectangle în Dart

Un dreptunghi cu laturile paralele cu axele, dat prin colțul stânga-sus, lățime (width) și înălțime (height).

Sintaxă
import 'dart:math';

const Rectangle(T left, T top, T width, T height)
factory Rectangle.fromPoints(Point<T> a, Point<T> b)
final T width
final T height

Ce face Rectangle

Rectangle(left, top, width, height) descrie un dreptunghi aliniat cu axele: colțul din stânga-sus este (left, top), iar width și height sunt lățimea și înălțimea. Coordonatele cresc spre dreapta și în jos, ca pe un ecran.

Are getter-ii left, top, right (left + width), bottom (top + height) și colțurile topLeft, bottomRight etc. ca Point. Rectangle.fromPoints(a, b) creează dreptunghiul dintre două colțuri opuse, în orice ordine.

Obiectul nu se poate modifica. Pentru un dreptunghi care se schimbă există MutableRectangle. Lățimea și înălțimea negative sunt transformate în 0.

Parametri

Parametru Descriere
left, top Coordonatele colțului din stânga-sus.
width, height Lățimea și înălțimea (nenegative).

Exemple

Exemplul 1: Proprietățile unui dreptunghi

import 'dart:math';

void main() {
  const r = Rectangle(10, 20, 100, 50);
  print(r);
  print('width=${r.width}, height=${r.height}');
  print('right=${r.right}, bottom=${r.bottom}');
  print('Arie: ${r.width * r.height}');
  print(r.bottomRight);
}

Rezultat

Rectangle (10, 20) 100 x 50
width=100, height=50
right=110, bottom=70
Arie: 5000
Point(110, 70)

Exemplul 2: Dreptunghi din două colțuri

fromPoints ordonează singur colțurile.

import 'dart:math';

void main() {
  final teren = Rectangle.fromPoints(const Point(40, 30), const Point(10, 5));
  print(teren);
  print('Gardul are ${2 * (teren.width + teren.height)} m.');
}

Rezultat

Rectangle (10, 5) 30 x 25
Gardul are 110 m.

Greșeli frecvente

  • Crezi că al treilea și al patrulea argument sunt colțul din dreapta-jos. Sunt width și height; pentru colțuri folosește Rectangle.fromPoints.
  • Încerci r.width = 10. Rectangle este imutabil; folosește MutableRectangle sau creează unul nou.

Comenzi înrudite

  • Rectangle.containsPoint: Verifică dacă un punct se află în interiorul dreptunghiului sau pe marginea lui.
  • Rectangle.intersects: intersects spune dacă două dreptunghiuri se suprapun; intersection returnează zona comună sau null.
  • Point: Un punct în plan, cu coordonatele x și y; suportă adunare, scădere și comparare cu ==.