Distanza punto-ellisse
Un collega mi ha dato questo problema da risolvere, che gli serve da implementare in un software.
Data un'ellisse in forma $a*x^2+b*x*y+c*y^2+d*x+e*y+f=0$ ed un punto trovare la distanza minima fra il punto ed un punto dell'ellisse.
Innanzitutto ho ridotto l'ellisse alla forma canonica e per comodità posso anche limitarmi a lavorare nel primo quadrante.
Poi ho seguito due approcci diversi:
- calcolo la distanza in funzione del punto appartenente all'ellisse, ottenendo una funzione da minimizzare nel dominio $[0, 2pi]$
- calcolo quando la tangente all'ellisse passante per un suo generico punto è ortogonale alla retta passante per il medesimo punto ed il punto dato.
In entrambi i casi arrivo ad un'equazione del tipo $a*sinx*cosx+b*sinx+c*cosx=0$, oggetto di un altro topic che ho aperto, ma che finora non ha trovato una soluzione, se non la trasformazione della suddetta in un'equazione algebrica di 4°.
Ma magari, ponendo il problema originale, a qualcuno viene in mente una qualche idea; io intanto mi accontento di costruire una soluzione approssimata.
Data un'ellisse in forma $a*x^2+b*x*y+c*y^2+d*x+e*y+f=0$ ed un punto trovare la distanza minima fra il punto ed un punto dell'ellisse.
Innanzitutto ho ridotto l'ellisse alla forma canonica e per comodità posso anche limitarmi a lavorare nel primo quadrante.
Poi ho seguito due approcci diversi:
- calcolo la distanza in funzione del punto appartenente all'ellisse, ottenendo una funzione da minimizzare nel dominio $[0, 2pi]$
- calcolo quando la tangente all'ellisse passante per un suo generico punto è ortogonale alla retta passante per il medesimo punto ed il punto dato.
In entrambi i casi arrivo ad un'equazione del tipo $a*sinx*cosx+b*sinx+c*cosx=0$, oggetto di un altro topic che ho aperto, ma che finora non ha trovato una soluzione, se non la trasformazione della suddetta in un'equazione algebrica di 4°.
Ma magari, ponendo il problema originale, a qualcuno viene in mente una qualche idea; io intanto mi accontento di costruire una soluzione approssimata.
Risposte
"apatriarca":
Hai provato a confrontare questo metodo con quello di risolvere numericamente l'equazione?
No, non ci avevo neppure pensato. comunque per il momento va bene la soluzione che ho esposto, poi approfondiremo anche questa tua proposta. Grazie
Hai provato a confrontare questo metodo con quello di risolvere numericamente l'equazione?
"apatriarca":
Io la risolverei numericamente come state già facendo.
Infatti, ho già risolto numericamente, ma non l'equazione qui sopra, piuttosto ho approcciato fin dall'inizio il problema in modo "numerico".
L'algoritmo probabilmente è un po' grezzo, ma funziona; ora si tratta di raffinarlo un po'.
Brevemente:
-individuo i 4 vertici dell'ellisse;
- individuo il più vicino dei 4 al punto;
- individuo il più vicino al punto dei due vertici adiacenti al vertice del punto precedente
- in questo modo ho identificato in quale quarto si trova il punto dell'ellisse più vicino al punto dato dal problema.
- da qui procedo per dimezzamenti dell'arco (in realtà dell'angolo al centro dell'ellisse), quindi individuo in quale dei due ottavi si trova il punto che sto cercando, poi in quale dei due sedicesimi e così via.
- l'iterazione si ferma appena raggiungo la precisione desiderata.
Sicuramente esistono metodi più veloci e furbi, questo è il primo decente che mi è venuto in mente.
Io la risolverei numericamente come state già facendo.
"franced":
[quote="desko"]Un collega mi ha dato questo problema da risolvere, che gli serve da implementare in un software.
Data un'ellisse in forma $a*x^2+b*x*y+c*y^2+d*x+e*y+f=0$ ed un punto trovare la distanza minima fra il punto ed un punto dell'ellisse.
Tanto per iniziare puoi supporre di avere l'equazione del tipo
$x^2/(a^2) + y^2 /(b^2) = 1$
in quanto basta fare un cambio di coordinate ortogonali.
Parametrizzando l'ellisse trovi
$x = a cos(t)$
$y = b sin(t)$
allora devi minimizzare la funzione
$d^2 = (a cos(t) - x_P)^2 + (b sin(t) - y_P)^2$
(si noti che $x_P$ e $y_P$ sono le cordinate del punto nel nuovo sistema di riferimento).
Derivando si ottiene
$(b^2 - a^2) sin(t) cos(t) + a sin(t) x_P - b cos(t) y_P = 0$[/quote]
Che è esattamente uno dei due tentativi che ho fatto: ma poi? tu come ricaveresti t?
"desko":
Un collega mi ha dato questo problema da risolvere, che gli serve da implementare in un software.
Data un'ellisse in forma $a*x^2+b*x*y+c*y^2+d*x+e*y+f=0$ ed un punto trovare la distanza minima fra il punto ed un punto dell'ellisse.
Tanto per iniziare puoi supporre di avere l'equazione del tipo
$x^2/(a^2) + y^2 /(b^2) = 1$
in quanto basta fare un cambio di coordinate ortogonali.
Parametrizzando l'ellisse trovi
$x = a cos(t)$
$y = b sin(t)$
allora devi minimizzare la funzione
$d^2 = (a cos(t) - x_P)^2 + (b sin(t) - y_P)^2$
(si noti che $x_P$ e $y_P$ sono le cordinate del punto nel nuovo sistema di riferimento).
Derivando si ottiene
$(b^2 - a^2) sin(t) cos(t) + a sin(t) x_P - b cos(t) y_P = 0$

"WiZaRd":
Perdona la mia domanda, ma che senso ha parlare di distanza minima tra un punto del piano e un punto dell'elisse?
In questa impostazione il punto dell'ellisse $\mathcal{E}$ si ritiene dato (almeno stando a come hai posto la domanda), sicché la soluzione che minimizza il problema non esiste, nel seso che è unica, essendo unica la distanza tra l'ellisse e il punto. Forse volete trovare la distanza minima tra il punto $P$ e l'esslisse $\mathcal{E}$?
Mi sono spiegato male, provo a riformulare.
Data un'ellisse ed un punto ad essa complanare, qual è il punto dell'ellisse più vicino al punto dato?
"apatriarca":
E' normalmente più semplice lavorare con dei polinomi che con funzioni trigonometriche. Se ha in particolare una equazione di quarto grado allora la puoi risolvere direttamente utilizzando uno dei metodi esistenti per la risoluzione delle equazioni di questo tipo.
Sebbene siano risolvibili algebricamente le equazioni di 4° sono piuttosto complicate da implementare in un software e piuttosto è preferibile un metodo numerico.
E' normalmente più semplice lavorare con dei polinomi che con funzioni trigonometriche. Se ha in particolare una equazione di quarto grado allora la puoi risolvere direttamente utilizzando uno dei metodi esistenti per la risoluzione delle equazioni di questo tipo.
Perdona la mia domanda, ma che senso ha parlare di distanza minima tra un punto del piano e un punto dell'elisse?
In questa impostazione il punto dell'ellisse $\mathcal{E}$ si ritiene dato (almeno stando a come hai posto la domanda), sicché la soluzione che minimizza il problema non esiste, nel seso che è unica, essendo unica la distanza tra l'ellisse e il punto. Forse volete trovare la distanza minima tra il punto $P$ e l'esslisse $\mathcal{E}$?
In questa impostazione il punto dell'ellisse $\mathcal{E}$ si ritiene dato (almeno stando a come hai posto la domanda), sicché la soluzione che minimizza il problema non esiste, nel seso che è unica, essendo unica la distanza tra l'ellisse e il punto. Forse volete trovare la distanza minima tra il punto $P$ e l'esslisse $\mathcal{E}$?