Determinazione dei coefficienti di una circonferenza
Buongiorno a tutti,
Parto a bomba sperando di non dilungarmi troppo.
Voglio determinare le relazioni che mi permettono di calcolare i coefficienti alpha, beta e gamma di una circonferenza su un piano avendo come dati di input le coordinate $x$ ed $y$ di 3 punti sul piano.
Queste equazioni verranno inserite in un foglio di calcolo che acquisisce le coordinate dei punti in base a dei parametri che cambiano sempre. Quindi il mio bisogno nasce dal fatto che voglio automatizzare la determinazione del raggio in base alle coordinate di questa terna di punti.
Assumiamo che i punti di input siano i seguenti:
P = (2 ; 5) --> (x1 ; y1)
Q = (4 ; 0) --> (x2 ; y2)
R = (-2; 0) --> (x3 ; y3)
Qualsiasi corso di albegra/geometria di base imposta un sistema 3x3 con 3 incognite in 3 equazioni ed e' facilmente calcolabile anche a mano.
Volendo rendere automatico questo calcolo, mi e' necessario determinare alpha, beta e gamma presenti nell'equazione del cerchio.
Considerando l'equazione canonica della circonferenza $x^2+y^2+alphax+betay+gamma=0$, il coefficiente alpha (ad esempio) dipende dalle coordinate dei punti scelti e l'equazione di soluzione per calcolare alpha ha al denominatore (x1-x3)(y2-y3).
Il prodotto al denominatore e' zero ed ho qualcosa che e' un numero diviso zero: Excel smette di collaborare (ovviamente) ed io non riesco a determinare alpha. La stessa situazione si ha per i rimanenti coefficienti beta e gamma.
Per cui vi lancio il quesito: esiste un modo per raggirare questo inconveniente? Se il denominatore si annulla, come faccio a determinare alpha, beta e gamma senza avere problemi con Excel?
Spero di ricevere un vostro consiglio!
Saluti e grazie a tutti coloro che parteciperanno a questo post!
kalo86
Parto a bomba sperando di non dilungarmi troppo.
Voglio determinare le relazioni che mi permettono di calcolare i coefficienti alpha, beta e gamma di una circonferenza su un piano avendo come dati di input le coordinate $x$ ed $y$ di 3 punti sul piano.
Queste equazioni verranno inserite in un foglio di calcolo che acquisisce le coordinate dei punti in base a dei parametri che cambiano sempre. Quindi il mio bisogno nasce dal fatto che voglio automatizzare la determinazione del raggio in base alle coordinate di questa terna di punti.
Assumiamo che i punti di input siano i seguenti:
P = (2 ; 5) --> (x1 ; y1)
Q = (4 ; 0) --> (x2 ; y2)
R = (-2; 0) --> (x3 ; y3)
Qualsiasi corso di albegra/geometria di base imposta un sistema 3x3 con 3 incognite in 3 equazioni ed e' facilmente calcolabile anche a mano.
Volendo rendere automatico questo calcolo, mi e' necessario determinare alpha, beta e gamma presenti nell'equazione del cerchio.
Considerando l'equazione canonica della circonferenza $x^2+y^2+alphax+betay+gamma=0$, il coefficiente alpha (ad esempio) dipende dalle coordinate dei punti scelti e l'equazione di soluzione per calcolare alpha ha al denominatore (x1-x3)(y2-y3).
Il prodotto al denominatore e' zero ed ho qualcosa che e' un numero diviso zero: Excel smette di collaborare (ovviamente) ed io non riesco a determinare alpha. La stessa situazione si ha per i rimanenti coefficienti beta e gamma.
Per cui vi lancio il quesito: esiste un modo per raggirare questo inconveniente? Se il denominatore si annulla, come faccio a determinare alpha, beta e gamma senza avere problemi con Excel?
Spero di ricevere un vostro consiglio!
Saluti e grazie a tutti coloro che parteciperanno a questo post!
kalo86
Risposte
Ciao e benvenut*!
fammi capire una cosa: vuoi trovare centro e raggio di una circonferenza del tipo $x^2+y^2+ax+by+c=0?$ con $a,b,c$ incogniti?
PS: click
fammi capire una cosa: vuoi trovare centro e raggio di una circonferenza del tipo $x^2+y^2+ax+by+c=0?$ con $a,b,c$ incogniti?
PS: click
"anto_zoolander":
Ciao e benvenut*!
fammi capire una cosa: vuoi trovare centro e raggio di una circonferenza del tipo $x^2+y^2+ax+by+c=0?$ con $a,b,c$ incogniti?
PS: click
Ciao!
Grazie per avermi dato il benvenuto!
Si, voglio determinare I coefficient $a$, $b$, $c$ considerando anche I casi in cui le formule vanno in tilt.
Se provi a determinare $a$ (ad esempio), scoprirai che al denominatore c'e' un prodotto di numeri (e questi numeri sono esattamente le coordinate dei punti). Quando il denominatore va a zero c'e' un problema.
Ma c'è un processo abbastanza standard per il calcolo dei parametri avendo tre punti, no?
"anto_zoolander":
Ma c'è un processo abbastanza standard per il calcolo dei parametri avendo tre punti, no?
Pensavo pure io che fosse standard.
Seguendo tutti i passaggi che ho fatto per ottenere la prima relazione del coefficient $alpha$, la relazione dice che al denominatore ho il prodotto di $(x1-x3)(y2-y3)$.
Ho preso in considerazione questa terna di punti perche' rende subito l'idea di come il prodotto vada a zero:
P = (2 ; 5) --> (x1 ; y1)
Q = (4 ; 0) --> (x2 ; y2)
R = (-2; 0) --> (x3 ; y3)
Quindi la mia domanda e' se esiste la possibilita' di bypassare questo problema in modo veloce e stabile.
Certo che esiste.
Prendi $P,Q,R$ tre punti distinti
1. prendi i segmenti per $P,Q$ e $Q,R$
2. le normali nei punti medi dei due segmenti(passano per il centro)
3. l’intersezione delle normali ti da il centro della circonferenza
4. la distanza del centro trovato da uno dei tre punti ti da il raggio
Poi dalle relazioni $(x_c,y_c)=(-a/2,-b/2)$ e $r=sqrt(a^2/4+b^2/4-c)$ trovi il resto.
Prendi $P,Q,R$ tre punti distinti
1. prendi i segmenti per $P,Q$ e $Q,R$
2. le normali nei punti medi dei due segmenti(passano per il centro)
3. l’intersezione delle normali ti da il centro della circonferenza
4. la distanza del centro trovato da uno dei tre punti ti da il raggio
Poi dalle relazioni $(x_c,y_c)=(-a/2,-b/2)$ e $r=sqrt(a^2/4+b^2/4-c)$ trovi il resto.
Avevo pensato a questo metodo, ma lo vedo piu' macchinoso.
Pensavo che si potesse applicare un workaround sulla determinazione dei coefficienti quando le coordinate dei punti sono particolari (zero al denominatore).
Mi sa che non ho scelta allora. Grazie per la risposta! Saluti!
Pensavo che si potesse applicare un workaround sulla determinazione dei coefficienti quando le coordinate dei punti sono particolari (zero al denominatore).
Mi sa che non ho scelta allora. Grazie per la risposta! Saluti!
Non è nemmeno molto calcoloso se ci pensi, basta fare due conticini.
Onestamente non mi sono soffermato su altri modi(quando si hanno tre punti), quindi potresti attendere la risposta di chi potrebbe aver approfondito di più la situazione.
Ciao!
Onestamente non mi sono soffermato su altri modi(quando si hanno tre punti), quindi potresti attendere la risposta di chi potrebbe aver approfondito di più la situazione.
Ciao!

"anto_zoolander":
Non è nemmeno molto calcoloso se ci pensi, basta fare due conticini.
Onestamente non mi sono soffermato su altri modi(quando si hanno tre punti), quindi potresti attendere la risposta di chi potrebbe aver approfondito di più la situazione.
Ciao!
Ho appena provato a determinare la coordinata X del centro della circonferenza.
Mi sono fermato qui (senza procedere alla coordinate Y del centro perche' ho gia' trovato un problema).
Ci risiamo: un numero diviso zero.
Per cortesia potresti provare anche tu? E' assurdo!
[ot]
Per non far perdere tempo prezioso a chi è disposto ad aiutarti, sarebbe onere tuo postare i calcoli effettuati al fine di rendere immediata l'individuazione dell'errore. IMHO
[/ot]
"kalo86":
[…] Ho appena provato a determinare la coordinata X del centro della circonferenza. […] Ci risiamo: un numero diviso zero. Per cortesia potresti provare anche tu?
Per non far perdere tempo prezioso a chi è disposto ad aiutarti, sarebbe onere tuo postare i calcoli effettuati al fine di rendere immediata l'individuazione dell'errore. IMHO

"Magma":
[ot][quote="kalo86"][…] Ho appena provato a determinare la coordinata X del centro della circonferenza. […] Ci risiamo: un numero diviso zero. Per cortesia potresti provare anche tu?
Per non far perdere tempo prezioso a chi è disposto ad aiutarti, sarebbe onere tuo postare i calcoli effettuati al fine di rendere immediata l'individuazione dell'errore. IMHO

Lo farei volentieri ma sai bene cosa vuol dire scrivere i vari passaggi su un forum. Anche perché si tratta di formule e non di parole in italiano. Non è bello partire dal presupposto che ci sia un errore, IMHO.

"kalo86":
ma sai bene cosa vuol dire scrivere i vari passaggi su un forum
lo fa ognuno di noi, molto spesso, proprio su questo forum.
Spero di farcela entro stasera perché per me è una novità scrivere formule e successivi passaggi su un Forum.
Non voglio assolutamente sminuire questa funzione.
Ci aggiorniamo in serata! Grazie!
Saluti,
kalo86
Non voglio assolutamente sminuire questa funzione.
Ci aggiorniamo in serata! Grazie!
Saluti,
kalo86
"kalo86":
Ho appena provato a determinare la coordinata X del centro della circonferenza.
Mi sono fermato qui (senza procedere alla coordinate Y del centro perche' ho gia' trovato un problema).
Ci risiamo: un numero diviso zero.
Per cortesia potresti provare anche tu? E' assurdo!
Francamente non so perchè tu abbia quel problema. Il centro della circonferenza passante per quei tre punti è (1, 17/10).
Da quello che ho capito tu voresti un modo per determinare centro e raggio usando excel, quindi con calcoli semplici fra celle.
Le formule che sto per scrivere, non saranno bellissime ma sono facili da usare con excel.
Il centro (a,b) è dato da:
$a=[y_2-y_3+(x_1^2-x_2^2)/(y_1-y_2)-(x_1^2-x_3^2)/(y_1-y_3)]/(2[(x_1-x_2)/(y_1-y_2)-(x_1-x_3)/(y_1-y_3)])$
$b=[x_2-x_3+(y_1^2-y_2^2)/(x_1-x_2)-(y_1^2-y_3^2)/(x_1-x_3)]/(2[(y_1-y_2)/(x_1-x_2)-(y_1-y_3)/(x_1-x_3)])$
"kalo86":
Non è bello partire dal presupposto che ci sia un errore. IMHO.
Beh... se si ha problemi nell'applicazione di una formula generale, molto probabilmente si tratterà di un errore di distrazione o di comprensione della legge; non credi? A meno che non si voglia utilizzare una relazione al di fuori del proprio campo di applicabilità, questo è un altro paio di maniche

Sicuramente avrò fatto qualche errore.
Adesso riprovo a fare i passaggi a casa perché li stavo facendo a lavoro e tra una telefonata ed una riunione avrò combinato un guaio.
Saluti!
Adesso riprovo a fare i passaggi a casa perché li stavo facendo a lavoro e tra una telefonata ed una riunione avrò combinato un guaio.
Saluti!
"Bokonon":
[quote="kalo86"]
Ho appena provato a determinare la coordinata X del centro della circonferenza.
Mi sono fermato qui (senza procedere alla coordinata Y del centro perche' ho gia' trovato un problema).
Ci risiamo: un numero diviso zero.
Per cortesia potresti provare anche tu? E' assurdo!
Francamente non so perchè tu abbia quel problema. Il centro della circonferenza passante per quei tre punti è (1, 17/10).
Da quello che ho capito tu voresti un modo per determinare centro e raggio usando excel, quindi con calcoli semplici fra celle.
Le formule che sto per scrivere, non saranno bellissime ma sono facili da usare con excel.
Il centro (a,b) è dato da:
$a=[y_2-y_3+(x_1^2-x_2^2)/(y_1-y_2)-(x_1^2-x_3^2)/(y_1-y_3)]/(2[(x_1-x_2)/(y_1-y_2)-(x_1-x_3)/(y_1-y_3)])$
$b=[x_2-x_3+(y_1^2-y_2^2)/(x_1-x_2)-(y_1^2-y_3^2)/(x_1-x_3)]/(2[(y_1-y_2)/(x_1-x_2)-(y_1-y_3)/(x_1-x_3)])$[/quote]
Ti faccio una domanda veloce: cosa succede se $y_1=2$ e $y_2=2$?
Queste formule vanno bene solo per certe coordinate.
Ho rieseguito i passaggi, allego velocemente uno screenshot per velocizzare i tempi:

Il denominatore del coefficiente $beta$ è zero in base ai punti scelti nel primo post.
Ecco perché mi blocco nel proseguire. Sto sbagliando in qualche passaggio?
Proseguendo nei vari passaggi, ottengo la seguente definizione del coefficiente $alpha$ non ancora totalmente semplificata perché $alpha$ si trova in entrambi i membri dell'equazione. Quel che importa è che bisogna notare il denominatore in quanto diventa nullo in base alle coordinate dei punti scelti. In tal caso l'algoritmo usato perde di significato e diventa inefficace per il calcolo del raggio del cerchio passante per tre punti.

Penso di aver trovato $alpha$ in questo modo:


Il denominatore del coefficiente $beta$ è zero in base ai punti scelti nel primo post.
Ecco perché mi blocco nel proseguire. Sto sbagliando in qualche passaggio?
Proseguendo nei vari passaggi, ottengo la seguente definizione del coefficiente $alpha$ non ancora totalmente semplificata perché $alpha$ si trova in entrambi i membri dell'equazione. Quel che importa è che bisogna notare il denominatore in quanto diventa nullo in base alle coordinate dei punti scelti. In tal caso l'algoritmo usato perde di significato e diventa inefficace per il calcolo del raggio del cerchio passante per tre punti.

Penso di aver trovato $alpha$ in questo modo:


"kalo86":
Il denominatore del coefficiente $ beta $ è zero in base ai punti scelti nel primo post. Sto sbagliando in qualche passaggio
Probabilmente sì:
ho trovato anche questo simpaticissimo tool

Comunque non serve a nulla scrivere tutti quei passaggi: è una perdita di tempo per te ma, peggio ancora, disincentiva le persone a intervenire; prova a ri-fare quei passaggi inserendo i valori dei punti, magari in questo modo sarà più semplice individuare l'errore

P.S. ho letto ora l'incipit del post e ritengono che la soluzione proposta da @Anto sia quella più lineare e facile da implementare in un algoritmo:
"anto_zoolander":
Prendi $P,Q,R$ tre punti distinti
1. prendi i segmenti per $P,Q$ e $Q,R$
2. le normali nei punti medi dei due segmenti (passano per il centro)
3. l’intersezione delle normali ti da il centro della circonferenza
4. la distanza del centro trovato da uno dei tre punti ti da il raggio
Poi dalle relazioni $(x_c,y_c)=(-a/2,-b/2)$ e $r=sqrt(a^2/4+b^2/4-c)$ trovi il resto.
di cui puoi trovare una spiegazione grafica qui
"kalo86":
Ti faccio una domanda veloce: cosa succede se $y_1=2$ e $y_2=2$?
Queste formule vanno bene solo per certe coordinate.
Beh ma dovrai pure controllare che i tre punti non siano allineati...
Quindi al massimo troverai o che due punti hanno un'ascissa uguale o un ordinata.
Quando inserisci i punti nel foglio excel, riordinali automaticamente in modo che siano uguali x2=x3 oppure y2=y3.
Basta usare semplici funzioni booleane e sei a posto no?
Ciao, grazie per la risposta.
Non ho messo in conto che i 3 punti siano allineati. L'ho escluso a priori perché nell'applicazione di mio interesse non si può verificare mai che ci sia una terna di punti consecutivi allineati. Quindi non ha senso prendere in considerazione questo caso limite.
La mia domanda era riferita al primo post dove trovi le coordinate di 3 punti a caso.
Se usi quelle coordinate, vedrai che le tue relazioni che hai determinato non danno alcun risultato perché il denominatore va a zero. Mi sembra strani che non si possa automatizzare un calcolo (che è anche banale direi) per determinare il raggio di curvatura di una porzione di curva... Basta che due punti su tre siano allineati ed il conto va in tilt.
Non ho messo in conto che i 3 punti siano allineati. L'ho escluso a priori perché nell'applicazione di mio interesse non si può verificare mai che ci sia una terna di punti consecutivi allineati. Quindi non ha senso prendere in considerazione questo caso limite.
La mia domanda era riferita al primo post dove trovi le coordinate di 3 punti a caso.
Se usi quelle coordinate, vedrai che le tue relazioni che hai determinato non danno alcun risultato perché il denominatore va a zero. Mi sembra strani che non si possa automatizzare un calcolo (che è anche banale direi) per determinare il raggio di curvatura di una porzione di curva... Basta che due punti su tre siano allineati ed il conto va in tilt.