View Full Version : [C / Java] Intersezione tra due rette..
Salve gente,
sto lavorando su una tesina ed avrei bisogno di una funzione che mi dica se due segmenti abbiano o meno un punto di intersezione. Che riceva quindi due coppie di punti e restituisca un boolean.
Dato che non ho molto tempo, sapreste dirmi dove posso trovare del codice in Java o C che faccia al caso mio.
THX
Boh? Così, su due piedi, non mi viene in mente niente di fatto... potresti seguire questi principi: calcolare le rette su cui giacciono i punti, calcolare le coordinate del punto di intersezione tra le rette (se c'è), ed infine vedere se il punto appartiene sia al primo che al secondo segmento... se è così, l'intersezione esiste ed è il valore (punto) trovato...
Per adesso sto lavorando su questa tesina a tempo pieno e mi farebbe molto comodo trovare una funzione già pronta per risparmiare un pò di tempo.
Diabolik.cub
20-06-2004, 22:59
non ho una funzione pronta ma secondo me potresti giocare con le differenze tra le coordinate degli estremi.
:)
Ragazzo del '99
21-06-2004, 22:29
.
Originariamente inviato da Diabolik.cub
non ho una funzione pronta ma secondo me potresti giocare con le differenze tra le coordinate degli estremi.
:)
Certo, ma dovresti determinarti un intervallo su un'asse in cui effettuare il controllo...
Ti ricavi le due rette che passano per i due punti...
Prendi l'intersezione dell'asse X in cui sono definiti entrambi i segmenti di retta chiamiamolo [x1,x2]...a questo punto ti ricavi dall'equazione delle rette i due punti dell'asse Y che non hai disponibili (due li hai già disponibili perchè definiti nei 4 punti originali) sostituendo x1 e x2 nelle rispettive equazioni...
A questo punto puoi ragionare sui vari punti y visto che per la retta 1 avrai (x1,y1),(x2,y2) e per la retta 2 avrai (x1,y3),(x2,y4):
se y1 >= y3 e y2 <= y4 allora si intersecano
altrimenti se y1 <= y3 e y2 >= y4 allora si intersecano
altrimenti non si interesecano
Ah...la formula della retta che passa per due punti è questa:
http://www.ripmat.it/mate/d/dc/dcee.html
Ragazzo del '99
22-06-2004, 22:48
Dato x scontato che lavori sul piano e conosci le coordinate degli estremi dei segmenti:
ti ricavi le rette a cui appartengono i segmenti. Una retta divide il piano in tre parti:
quella i cui punti (x,y) sono tali per cui ax+by+c>0
quella i cui punti (x,y) sono tali per cui ax+by+c<0
e i punti della retta per cui ax+by+c=0
per ciascun segmento prendi l'equazione della retta che lo contiene (facile calcolare i coefficienti a,b,c partendo dai vertici del segmento) e sostituisci a x e y le coordinate degli estremi dell'altro segmento. Se ottieni segni opposti in entrambi i casi (cioè con l'equazione della retta 1 hai che un vertice dell'altro segmento dà un valore<0 mentre l'altro vertice dà un valore>0, e poi con l'equazione della retta 2 idem) oppure un =0 allora c'è intersezione.
Non garantisco questo metodo, l'ho pensato mentre ero al cesso :D
Mi sembra analogo al mio... :rolleyes:
VOGLIO IL CODICE BELLO E PRONTO!!!!!!!!!!
:cry: :cry: :cry: :cry:
Troppo facile così...ci vuole due secondi se fai come ti ho detto io (sempre che tu stia lavorando in 2D)...
Ragazzo del '99
23-06-2004, 21:54
Originariamente inviato da Mixmar
Mi sembra analogo al mio... :rolleyes:
Il tuo richiede più calcoli
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.