Rectangle.containsPoint în Dart

Verifică dacă un punct se află în interiorul dreptunghiului sau pe marginea lui.

Sintaxă
bool containsPoint(Point<num> another)
bool containsRectangle(Rectangle<num> another)

Ce face Rectangle.containsPoint

r.containsPoint(p) returnează true dacă punctul p este în dreptunghi. Marginile sunt incluse: un punct exact pe right sau bottom este considerat înăuntru.

Este folosit la verificarea unui clic pe un buton, la detectarea coliziunilor în jocuri sau la filtrarea punctelor dintr-o zonă de pe hartă. Pentru un dreptunghi întreg există containsRectangle.

Parametri

Parametru Descriere
another Punctul verificat.

Ce returnează

true dacă punctul este în interior sau pe margine, altfel false.

Exemple

Exemplul 1: Clic pe un buton

import 'dart:math';

void main() {
  const buton = Rectangle(100, 200, 80, 30);
  final clicuri = [const Point(120, 210), const Point(180, 230), const Point(90, 210)];
  for (final c in clicuri) {
    print('Clic la (${c.x}, ${c.y}): ${buton.containsPoint(c) ? 'pe buton' : 'pe lângă'}');
  }
}

Rezultat

Clic la (120, 210): pe buton
Clic la (180, 230): pe buton
Clic la (90, 210): pe lângă

Exemplul 2: Orașe dintr-o zonă de pe hartă

Coordonate aproximative (longitudine, latitudine) și o zonă dreptunghiulară pentru Moldova.

import 'dart:math';

void main() {
  final zona = Rectangle.fromPoints(const Point(25.5, 46.0), const Point(28.2, 48.3));
  const orase = {
    'Iași': Point(27.6, 47.2),
    'Suceava': Point(26.3, 47.7),
    'Cluj': Point(23.6, 46.8),
  };
  orase.forEach((nume, loc) {
    print('$nume: ${zona.containsPoint(loc)}');
  });
  print(zona.containsRectangle(Rectangle(26, 47, 1, 1)));
}

Rezultat

Iași: true
Suceava: true
Cluj: false
true

Greșeli frecvente

  • Uiți că axa verticală crește în jos: un dreptunghi cu top = 0 și height = 50 conține y = 40, nu y = -40.

Comenzi înrudite

  • Rectangle: Un dreptunghi cu laturile paralele cu axele, dat prin colțul stânga-sus, lățime (width) și înălțime (height).
  • 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 ==.