În geometria euclidiană, intersecția a două drepte poate fi o mulțime goală , un punct sau o dreaptă. Distingerea acestor cazuri și găsirea punctului de intersecție este folosită, de exemplu, în grafica computerizată , în planificarea mișcării și în detectarea coliziunilor .
În geometria euclidiană tridimensională , dacă două drepte nu sunt în același plan , ele se numesc înclinate și nu au puncte de intersecție. Dacă liniile sunt în același plan, există trei posibilități. Dacă coincid, ele au infinit de puncte în comun (și anume, toate punctele de pe aceste linii). Dacă dreptele sunt distincte, dar au aceeași pantă , ele sunt paralele și nu au puncte comune. În caz contrar, au un punct de intersecție.
În geometria non-euclidiană, două drepte se pot intersecta în mai multe puncte, iar numărul altor linii (paralele) care nu se intersectează cu o dreaptă dată poate fi mai mare decât unul.
O condiție necesară pentru intersecția a două linii este ca acestea să aparțină aceluiași plan, adică aceste linii să nu se intersecteze. Îndeplinirea acestei condiții este echivalentă cu degenerarea tetraedrului , în care două vârfuri se află pe o linie dreaptă, iar celelalte două se află pe cealaltă (adică volumul acestui tetraedru este egal cu zero). Forma algebrică a acestei condiții poate fi găsită în articolul „ Verificarea încrucișării ”.
Se consideră intersecția a două drepte și pe plan, unde linia este definită de două puncte diferite și , iar linia este definită de puncte diferite și [1] .
Intersecția dreptelor și poate fi găsită folosind determinanții .
Determinanții pot fi rescriși astfel:
Rețineți că punctul de intersecție se referă la liniile infinite, nu la segmentele de linie dintre puncte și poate fi în afara segmentelor de linie. Dacă (în loc să rezolvăm într-un singur pas) căutăm o soluție în termeni de curbe Bezier de ordinul întâi , atunci putem verifica parametrii acestor curbe 0.0 ≤ t ≤ 1.0 și 0.0 ≤ u ≤ 1.0 ( t și u sunt parametri) .
Dacă două drepte sunt paralele sau coincid, numitorul dispare:
Dacă liniile sunt foarte aproape de paralele (aproape paralele), pot apărea probleme numerice în calculul computerizat, iar recunoașterea unei astfel de condiții poate necesita un test de „incertitudine” adecvat pentru aplicație. O soluție mai stabilă și mai generală se poate obține prin rotirea segmentelor în așa fel încât unul dintre ele să devină orizontal, iar apoi soluția parametrică a celei de-a doua drepte este ușor de obținut. La rezolvare, este necesară luarea în considerare atentă a cazurilor speciale (paralelism/coincidență a liniilor drepte, suprapunerea segmentelor).
Coordonatele și punctele de intersecție a două drepte neverticale pot fi găsite cu ușurință folosind următoarele substituții și transformări.
Să presupunem că două drepte au ecuații și , unde și sunt pantele dreptelor și și sunt intersecțiile dreptelor cu axa y . În punctul de intersecție al dreptelor (dacă se intersectează), ambele coordonate vor coincide, din care obținem egalitatea:
.Putem transforma această egalitate pentru a evidenția ,
,și apoi
.Pentru a găsi coordonata y , tot ce trebuie să facem este să introducem valoarea x într-una dintre formulele liniei, ca prima:
.De aici obținem punctul de intersecție al liniilor
.Rețineți că pentru a = b cele două drepte sunt paralele. Dacă în același timp c ≠ d , liniile sunt diferite și nu au intersecții, în caz contrar liniile coincid [2] .
Când se utilizează coordonate omogene , punctul de intersecție a două linii date explicit poate fi găsit destul de simplu. În spațiul bidimensional, orice punct poate fi definit ca o proiecție a unui punct tridimensional dat de un triplu . Maparea coordonatelor 3-dimensionale la cele 2-dimensionale are loc conform formulei . Putem converti punctele din spațiul bidimensional în coordonate omogene prin echivalarea celei de-a treia coordonate cu unu - .
Să presupunem că vrem să găsim intersecția a două linii infinite în spațiul bidimensional, care sunt date de formulele și . Putem reprezenta aceste două linii în coordonate liniare ca ,
Intersecția a două drepte este dată pur și simplu de formulele [3]
Dacă , liniile nu se intersectează.
În spațiul bidimensional, liniile cu mai mult de două aproape sigur nu se intersectează la un punct. Pentru a determina dacă se intersectează într-un punct, iar dacă se intersectează, pentru a găsi punctul de intersecție, scriem ecuația i -a ( i = 1, ..., n ) ca și aranjam aceste ecuații sub formă de matrice
unde al i -lea rând al matricei n × 2 A este , w este un vector 2 × 1 ( x, y ) T , iar al i -lea element al vectorului coloană b este b i . Dacă coloanele matricei A sunt independente, atunci rangul matricei este 2. Dacă și numai dacă rangul matricei extinse este [ A | b ] este, de asemenea, egal cu 2, există o soluție pentru ecuația matriceală și apoi există și un punct de intersecție a n drepte. Punctul de intersecție, dacă există, este dat de
unde este pseudoinversul matricei . Alternativ, soluția poate fi găsită prin rezolvarea oricăror două ecuații independente. Dar dacă rangul matricei A este 1 și rangul matricei augmentate este 2, nu există soluții. În cazul în care rangul matricei extinse este egal cu 1, toate liniile coincid.
În spațiul 3DAbordarea prezentată mai sus se extinde cu ușurință la spațiul tridimensional. În spațiile tridimensionale și superioare, chiar și două linii aproape sigur nu se intersectează. Perechile de linii neparalele, care nu se intersectează, se numesc oblic . Dar când există o intersecție, aceasta poate fi găsită după cum urmează.
În spațiul tridimensional, o linie dreaptă este reprezentată de intersecția a două plane, fiecare dintre acestea fiind dat de formula Apoi mulțimea de n drepte poate fi reprezentată ca 2 n ecuații dintr-un vector de coordonate tridimensional w = ( x , y , z ) T :
,unde A este o matrice 2n × 3 și b este o matrice 2n × 1. Ca și mai înainte, un punct de intersecție unic există dacă și numai dacă A are rang de coloană complet și matricea augmentată [ A | b ] nu este. Singurul punct de intersecție, dacă există, este dat de
În dimensiunile două și mai sus, se poate găsi punctul care este cel mai apropiat de aceste două (sau mai multe) linii în sensul celei mai mici sume de pătrate .
În două dimensiuniÎn cazul unui spațiu bidimensional, reprezentați dreapta i ca un punct pe dreptă și o unitate normală perpendiculară pe dreaptă. Adică dacă și sunt puncte pe linia 1, atunci fie și
,care este vectorul unitar de-a lungul liniei rotite cu 90º.
Rețineți că distanța de la punctul x la linie este dată de formula
Prin urmare, pătratul distanței de la x la linie este
Suma pătratelor distanțelor față de un set de drepte este funcția obiectiv :
Expresia poate fi convertită:
Pentru a găsi minimul, diferențiam față de x și setăm rezultatul egal cu zero:
În acest fel,
Unde
În spațiul 3DDeși normalul nu poate fi definit în dimensiuni de peste doi , ea poate fi generalizată la orice dimensiune dacă se observă că este pur și simplu o matrice (simetrică) cu toate valorile proprii egale cu unu, cu excepția valorii proprii zero în direcția dreptei , care dă o semi- normă între un punct și un alt punct. Într-un spațiu de orice dimensiune, dacă este un vector unitar de-a lungul liniei drepte i -a, atunci
se transformă înunde E este matricea identității și apoi