Intersecția segmentelor

Notă. Aceasta este o lecție cu probleme în informatică (algoritmi de secțiune). Dacă aveți nevoie pentru a rezolva sarcina de informatică, care nu este aici - scrie despre ea în forum. Cel mai probabil, soluția sa va completa acest curs cu sarcinile informatice.

Sarcina.
Pe plan sunt date două segmente date de coordonatele întregi. Determinați dacă au un punct comun de intersecție.
Soluția.
Pentru a afla dacă segmentele se intersectează, vom compune ecuațiile liniilor la care apar segmentele date. Dacă sistemul de ecuații pentru aceste linii are o soluție, atunci astfel de linii au un punct de intersecție. Dacă punctul de intersecție este între coordonatele punctelor care aparțin segmentelor, segmentele se intersectează.

Desemnări.
Semnificăm segmentul 1 cu AB și lăsăm să aibă coordonatele A (x1; y1) B (x2; y2)
Semnificăm segmentul 2 ca un CD și lăsăm să aibă coordonatele C (x3; y3) B (x4; y4)

Pentru a calcula coeficienții unghiali corelați, condiția x1 ≤ x2 trebuie îndeplinită; x3 ≤ x4;
Dacă nu, schimbați perechile de coordonate ale segmentelor.

Pasul 6. Să testam segmentele pentru paralelism.
Dacă k1 = k2. atunci liniile sunt paralele și segmentele nu se pot intersecta. Oprim soluția problemei.

Dacă liniile au un punct de intersecție, atunci
k1 x + b1 = k2 x + b2

Pasul 9. Luați în considerare faptul că punctul de intersecție a liniilor poate fi în afara segmentelor care aparțin acestor linii. Astfel, dacă segmentele se intersectează, atunci, de atunci
x1 ≤ x2; x3 ≤ x4;
trebuie îndeplinite următoarele condiții:
x1 ≤ x4 și x4 ≤ x2
sau
x1 ≤ x3 și x3 ≤ x2

Dacă una dintre cele două condiții este adevărată, atunci segmentele au un punct de intersecție, altfel - segmentele nu se intersectează.

Articole similare