Cum să verificați dacă se intersectează două dreptunghiuri - totul despre dezvoltarea web-ului

Adesea, atunci când se dezvoltă diverse interfețe, se pune problema dacă se intersectează două dreptunghiuri specificate. Soluția în acest caz este foarte simplă, dar n-am găsit-o nicăieri și, prin urmare, din nou am trebuit să scriu bicicleta mea. La aceeași rake pe care dezvoltatorii se apropie, soluția dată de guru la forumuri funcționează numai în cazuri speciale și nu acoperă toate opțiunile pentru aranjarea a două dreptunghiuri în avion.







Cum să verificați dacă se intersectează două dreptunghiuri - totul despre dezvoltarea web-ului






Funcția funcționează numai pentru dreptunghiuri ale căror laturi sunt paralele cu axele de coordonate. În general, sarcina este redusă la părțile proeminente pe axa de coordonate și verificând pereche intersecțiile a două segmente. Dacă două perechi de segmente se intersectează unul pe altul, atunci unul dintre dreptunghiuri se află pe cealaltă. Cu toate acestea, aici este o captură: este necesar să se verifice și cazul în care o parte a dreptunghiului №1 se află în interiorul aceleiași laturi a dreptunghiului №2, iar celălalt, partea a 2-a se află în interiorul aceluiași în nr.1. Acest caz este prezentat în figura de mai sus, sub numărul 1.

Să fie două dreptunghiuri A și B.

atunci verificarea intersecției acestor două dreptunghiuri va fi efectuată de următoarea funcție

și credeai că este simplu. Și eu am crezut așa, până am prins o serie de opțiuni care nu se potrivesc soluțiilor menționate în forumuri. Prima jumătate a acestui "mare" verifică toate cazurile cu excepția primei, cea de-a doua fiind creată special pentru cazul nr. 1.

Doar ca două ori. Verificați dacă marginea superioară a primului dreptunghi este sub a doua, sau cea inferioară este deasupra marginii superioare a primei. Același lucru este valabil și pentru axa X.







Articole similare

Trimiteți-le prietenilor: