Ce face Rectangle.intersects
a.intersects(b) returnează true dacă dreptunghiurile au cel puțin un punct comun (atingerea pe margine contează).
a.intersection(b) returnează dreptunghiul comun sau null dacă nu se suprapun, de aceea tipul este Rectangle<T>?. boundingBox face opusul: cel mai mic dreptunghi care le cuprinde pe amândouă.
Parametri
| Parametru | Descriere |
|---|---|
other |
Celălalt dreptunghi. |
Ce returnează
intersects: bool. intersection: zona comună sau null.
Exemple
Exemplul 1: Suprapunere și zonă comună
import 'dart:math';
void main() {
const a = Rectangle(0, 0, 10, 5);
const b = Rectangle(5, 2, 10, 10);
const c = Rectangle(20, 20, 3, 3);
print(a.intersects(b));
print(a.intersection(b));
print(a.intersects(c));
print(a.intersection(c));
print(a.boundingBox(c));
}
Rezultat
true
Rectangle (5, 2) 5 x 3
false
null
Rectangle (0, 0) 23 x 23
Exemplul 2: Coliziune între jucător și obstacole
import 'dart:math';
void main() {
const jucator = Rectangle(50, 50, 20, 20);
const obstacole = {
'zid': Rectangle(65, 40, 10, 100),
'copac': Rectangle(200, 50, 30, 30),
};
obstacole.forEach((nume, o) {
final zona = jucator.intersection(o);
if (zona == null) {
print('$nume: liber');
} else {
print('$nume: coliziune pe ${zona.width} x ${zona.height}');
}
});
}
Rezultat
zid: coliziune pe 5 x 20
copac: liber
Greșeli frecvente
- Folosești rezultatul lui
intersectionfără să verificinull. Analizorul te obligă: compară cunullsau folosește?..
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.containsPoint: Verifică dacă un punct se află în interiorul dreptunghiului sau pe marginea lui.