|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Dec 2000
Città: Castelvetrano e Palermo
Messaggi: 209
|
[C / Java] Intersezione tra due segmenti..
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 Ultima modifica di isola81 : 19-06-2004 alle 12:56. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Dec 2000
Città: Castelvetrano e Palermo
Messaggi: 209
|
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Feb 2002
Città: Trento
Messaggi: 962
|
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...
__________________
"Et Eärallo Endorenna utúlien. Sinome maruvan ar Hildinyar tenn' Ambar-metta!" -- Aragorn Elessar, Heir of Isildur Mixmar -- OpenSuSE 11.1 on AMD 64 3000+ on DFI LanParty nF4-D | GeForce 6600 GT + Thermaltake Schooner on Samsung 710N Storage -- ( 2 x Hitachi Deskstar 80 Gb + 1 x Hitachi 250 Gb ) = 1 RAID 5 + 1 Storage space LaCie Ethernet Disk Mini 250 Gb | HP - DV2150 EL MILAN CLAN |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Dec 2000
Città: Castelvetrano e Palermo
Messaggi: 209
|
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.
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2001
Città: Torino (provincia)
Messaggi: 960
|
non ho una funzione pronta ma secondo me potresti giocare con le differenze tra le coordinate degli estremi.
__________________
Nel mercatino ho concluso con: eleoluca, huangwei, jai, ^v3rsus, Rinos, arvey, kinderboy. |
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Aug 2003
Messaggi: 114
|
.
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
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 Ultima modifica di cionci : 23-06-2004 alle 10:10. |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ah...la formula della retta che passa per due punti è questa:
http://www.ripmat.it/mate/d/dc/dcee.html |
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Aug 2003
Messaggi: 114
|
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 |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Feb 2002
Città: Trento
Messaggi: 962
|
Mi sembra analogo al mio...
__________________
"Et Eärallo Endorenna utúlien. Sinome maruvan ar Hildinyar tenn' Ambar-metta!" -- Aragorn Elessar, Heir of Isildur Mixmar -- OpenSuSE 11.1 on AMD 64 3000+ on DFI LanParty nF4-D | GeForce 6600 GT + Thermaltake Schooner on Samsung 710N Storage -- ( 2 x Hitachi Deskstar 80 Gb + 1 x Hitachi 250 Gb ) = 1 RAID 5 + 1 Storage space LaCie Ethernet Disk Mini 250 Gb | HP - DV2150 EL MILAN CLAN |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Dec 2000
Città: Castelvetrano e Palermo
Messaggi: 209
|
VOGLIO IL CODICE BELLO E PRONTO!!!!!!!!!!
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Troppo facile così...ci vuole due secondi se fai come ti ho detto io (sempre che tu stia lavorando in 2D)...
|
|
|
|
|
|
#13 | |
|
Member
Iscritto dal: Aug 2003
Messaggi: 114
|
Quote:
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:40.



















