Oppure

Loading
28/12/12 15:34
sroiguzzo
In effetti quella proposta è una soluzione da primo anno delle superiori, e come tale piena di problemi a livello applicativo.
Quando ad esempio una delle rette è verticale (non risolvibile con quel tipo di analisi) o sub-verticale (porta ad errori notevoli specie se si lavora in singola precisione, ad esempio i pixel di differenza riscontrati).
Una banale soluzione, quando una delle rette è sub-verticale o verticale, e l'altra NON è orizzontale, èquella di specchiare il sistema geomerico rispetto alla bisettrice del primo quadrante, ovvero scambiare le X con le Y, nel qual caso la retta verticale diventa orizzontale, ed il sistema risovibile (si riscambiano ovviamente X e Y dell'intersezione!).

Molto, molto meglio, però, è usare qualcosa appena un pelo più avanzato dell'algebra da primo anno del liceo, ovvero trattare il problema in forma parametrica, la vecchia odiata forma parametrica di cui non si capiva l'utilità... bene, eccola qua!

data la retta A passante per Xa1,Ya1 e Xa2 e Ya2, e la retta B per Xb1,Yb1 e Xb2 e Yb2, potremo esprimere un punto Xa,Ya appartente alla retta A in forma parametrica con le due equazioni:
Xa = Xa1 + u (Xa2 - Xa1)
Ya = Ya1 + u (Ya2 - Ya1)
analogamente un punto Xb,Yb appartenente a B con:
Xb = Xb1 + v (Xb2 - Xb1)
Yb = Yb1 + v (Yb2 - Yb1)
Impostando un sistema
Xa=Xb
Ya=Yb
e risolvendolo rispetto a u e v, e sostituendo uno dei due valori nella opportuna coppia di equazioni, si ricavano Xa (o il coincidente Xb) e Ya (o il coincidente Yb).

Vantaggio accessorio, se u<0 or u>1 or v<0 or v>1 allora i due segmenti, che hanno per estremi i punti dati, non si intersecano!
aaa