Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Algoritmi - punto di intersezione tra due segmenti o rette
Forum - Algoritmi - punto di intersezione tra due segmenti o rette

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
anthony015 (Member)
Pro


Messaggi: 116
Iscritto: 20/05/2011

Segnala al moderatore
Postato alle 19:28
Domenica, 05/06/2011
sapendo che ho due segmenti che vanno da un pixel che conosco ad un altro pixel che conosco, come potrei fare per determinare il punto di incontro? io avevo pensato a mettere a sistema le equazione(come si fa matematicamente), ma trovo molte difficoltà a risolvere questo sistema...

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 20:17
Domenica, 05/06/2011
Testo quotato

Postato originariamente da anthony015:

sapendo che ho due segmenti che vanno da un pixel che conosco ad un altro pixel che conosco, come potrei fare per determinare il punto di incontro? io avevo pensato a mettere a sistema le equazione(come si fa matematicamente), ma trovo molte difficoltà a risolvere questo sistema...



????

ti calcoli le rette passanti per gli estremi dei segmenti

m = (y2 - y1) / (x2 -x1)
q = y1 - ((y2 - y1) / (x2 - x1)) * x1

dopodichè le metti a sistema:

| y = m1 * x + q1
| y = m2 * x + q2

m2 * x + q2 = m1 * x + q1

x(m2 - m1) = q1 - q2

| x = (q1 - q2) / (m2 - m1)
| y = m1 * ((q1 - q2) / (m2 - m1)) + q1

x e y sono le coordinate dell'intersezione

è algebra del primo anno delle superiori.

PM Quote
Avatar
anthony015 (Member)
Pro


Messaggi: 116
Iscritto: 20/05/2011

Segnala al moderatore
Postato alle 16:36
Lunedì, 06/06/2011
talmente banale che la tua soluzione è errata:pat:, ma comunque mi è stata di aiuto e ispirazione nel risolvere il problema...
per chi è interessato posto una valida soluzione:
Codice sorgente - presumibilmente Algoritmi

  1. a=linee[1].getIY();//Coordinate Y del punto 1 della prima retta
  2. b=linee[1].getFY();//      ""       Y   ""     ""   2    ""      ""      ""
  3. c=linee[1].getIX();//      ""        X   ""     ""   1    ""      ""      ""
  4. d=linee[1].getFX();//      ""       X   ""     ""   2    ""      ""      ""
  5. e=linee[2].getIY();//      ""       Y   ""     ""   1    ""   seconda ""
  6. f=linee[2].getFY();//      ""       Y   ""     ""   2    ""      ""      ""
  7. g=linee[2].getIX();//      ""       X   ""     ""   1    ""      ""      ""
  8. h=linee[2].getFX();//      ""      X   ""     ""   2    ""      ""      ""
  9. yToRet=((b-a)*e*h+(a-b)*f*g+(b*c-a*d)*f+(a*d-b*c)*e)/((b-a)*h+(a-b)*g+(c-d)*f+(d-c)*e);//Coordinata Y punto intersezione
  10. xToRet=(((d-c)*e-a*d+b*c)*h+((c-d)*f+a*d-b*c)*g)/((b-a)*h+(a-b)*g+(c-d)*f+(d-c)*e);//Coordinata X punto intersezione


PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 17:53
Lunedì, 06/06/2011
Testo quotato

Postato originariamente da anthony015:

talmente banale che la tua soluzione è errata:pat:, ma comunque mi è stata di aiuto e ispirazione nel risolvere il problema...
per chi è interessato posto una valida soluzione:



mi dispiace ma la mia soluzione l'ho controllata due volte con derive, e ti assicuro che è giusta :)

invece che postare sul forum una domanda inutile perchè non ti sei messo da subito a lavorarci? oltre al fatto che non mi piace venir trattato così, soprattutto quando uno ha fatto lo sbattimento di perdere del proprio tempo ad aiutare il prossimo.

se ti servirà aiuto in futuro non cercarlo da me.

PM Quote
Avatar
anthony015 (Member)
Pro


Messaggi: 116
Iscritto: 20/05/2011

Segnala al moderatore
Postato alle 19:07
Lunedì, 06/06/2011
ho semplicemente usato il tuo classico approccio nei confronti di un utente in difficoltà, inoltre ho testato a livello software la tua soluzione e in base ai risultati l'ho ritenuta errata...

PM Quote
Avatar
nikipe_silver (Founder Member)
Expert


Messaggi: 339
Iscritto: 20/09/2005

Segnala al moderatore
Postato alle 21:57
Lunedì, 06/06/2011
mi spiace ma la soluzione di hedo e' corretta matematicamente...piu' probabile che hai sbagliato a interpretarla...cosa piuttosto semplice, in effetti..

PM Quote
Avatar
anthony015 (Member)
Pro


Messaggi: 116
Iscritto: 20/05/2011

Segnala al moderatore
Postato alle 22:05
Lunedì, 06/06/2011
ho provato anche copiando il codice pari pari, che sbagli il compilatore??

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 23:25
Lunedì, 06/06/2011
Testo quotato

Postato originariamente da anthony015:

ho provato anche copiando il codice pari pari, che sbagli il compilatore??



non devi copiare e incollare, non è codice, non è racchiuso tra tag code :)

sono le operazioni che devi svolgere, due secondi di interpretazione e puoi tradurlo in codice...

PM Quote
Avatar
anthony015 (Member)
Pro


Messaggi: 116
Iscritto: 20/05/2011

Segnala al moderatore
Postato alle 23:32
Lunedì, 06/06/2011
mi prendi in giro?
ti devo scrivere il codice provato precedentemente o ti fidi?
ps: non veniva completamente errato, "soltanto" veniva sballato di una ventina di pixel

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo