Discussione:
coordinate di un punto in un cerchio
(troppo vecchio per rispondere)
Roberto -MadBob- Guido
2004-07-17 20:07:15 UTC
Permalink
| |
y _____|__________
| | / \
| |/ \
| | |
| | |
| |\ /
| | \__/
| |
+----|----------
0 x

Fingete che questo sia un cerchio (spero che si veda bene, una volta
postato...) all'interno di un sistema di assi cartesiani.
x e y sono le coordinate delle rette (a coefficiente di angolazione 0)
tangenti alla circonferenza nei punti indicati, cioe' sugli estremi di
ascissa minore e ordinata maggiore, dunque sono a conoscenza della
posizione della circonferenza sul piano. Ne conosco inoltre il diametro.

Dato un punto specificato dalle coordinate X e Y, come posso sapere se
tale punto rientra nell'area della circonferenza?
Ovviamente x + d > X > x (stessa cosa per Y), ma questo basterebbe per
un normale rettangolo: per una circonferenza, come mi devo comportare?

Ringrazio in anticipo per l'aiuto...

--
web http://madbob.homelinux.com
mail ***@CANCELLAMIk.st
BrainTop Project maintainer
http://braintop.sourceforge.net


Inviato da www.mynewsgate.net
Life's too good
2004-07-17 20:54:56 UTC
Permalink
Indichiamo con d il diametro.
Le coordinate del centro sono (x+d/2; y-d/2)
E' sufficiente verificare che sqrt((X-x-d/2)^2+(Y-y+d/2)^2) sia minore di
d/2 (o uguale se il punto sta sulla circonferenza).
Roberto -MadBob- Guido
2004-07-17 22:13:17 UTC
Permalink
Post by Life's too good
E' sufficiente verificare che sqrt((X-x-d/2)^2+(Y-y+d/2)^2) sia minore di
d/2 (o uguale se il punto sta sulla circonferenza).
Mumble mumble... Questa formula dovrebbe bastarmi...

Il fatto e' che sto elaborando una interfaccia grafica (sono un
programmatore :-) ) composta di N circonferenze disposte intorno ad una
circonferenza piu' grande
+--------+
| + + |
| /\ |
| \/ |
| + + |
+--------+

Sono riuscito gia' a posizionare le circonferenze esterne nel modo
corretto, ma partendo dalla dimensione del rettangolo dove si trova il
tutto, dal numero di circonferenze esterne e dalla dimensione delle
diverse circonferenze (quella maggiore al centro, le minori intorno) devo
capire se il mouse viene cliccato all'interno dell'area di uno degli elementi.

Come gia' detto, la formula suggerita dovrebbe essere sufficiente: sto
cercando di implementarla con un algoritmo quanto piu' generico possibile,
in modo da potersi adattare al numero di circonferenze esterne presenti e
alle diverse posizioni dovute alle diverse dimensioni.

Per ora grazie: faro' sapere se sono riuscito a raggiungere lo scopo :-)

--
web http://madbob.homelinux.com
mail ***@CANCELLAMIk.st
BrainTop Project maintainer
http://braintop.sourceforge.net


Inviato da www.mynewsgate.net
Roberto -MadBob- Guido
2004-07-17 23:35:27 UTC
Permalink
Post by Roberto -MadBob- Guido
Per ora grazie: faro' sapere se sono riuscito a raggiungere lo scopo :-)
Ok: sono l'1.37 e, bene o male, son riuscito a fare quel che dovevo fare,
sfruttando la dritta della distanza tra due punti sul piano cartesiano (e'
banale, ma non ci avevo pensato :-) )

Grazie ancora per l'aiuto :-)

--
web http://madbob.homelinux.com
mail ***@CANCELLAMIk.st
BrainTop Project maintainer
http://braintop.sourceforge.net


Inviato da www.mynewsgate.net
Also spreken Zaratustra
2004-07-17 21:21:37 UTC
Permalink
Calcola la distanza dal centro del punto(xg,yg) [g sta per generico], se
essa è maggiore del raggio il punto non è allinterno della circonferenza!!!
Troppo stupido?
Allora senti questa:
prendiamo il punto P(xg,yg) prolunghiamo da esso una retta verso il centro
del cerchio, se spostandoci su di essa verso il centro incrociamo due volte
la circonferenza, il punto è esterno, altrimenti è interno!!!
Post by Roberto -MadBob- Guido
| |
y _____|__________
| | / \
| |/ \
| | |
| | |
| |\ /
| | \__/
| |
+----|----------
0 x
Fingete che questo sia un cerchio (spero che si veda bene, una volta
postato...) all'interno di un sistema di assi cartesiani.
x e y sono le coordinate delle rette (a coefficiente di angolazione 0)
tangenti alla circonferenza nei punti indicati, cioe' sugli estremi di
ascissa minore e ordinata maggiore, dunque sono a conoscenza della
posizione della circonferenza sul piano. Ne conosco inoltre il diametro.
Dato un punto specificato dalle coordinate X e Y, come posso sapere se
tale punto rientra nell'area della circonferenza?
Ovviamente x + d > X > x (stessa cosa per Y), ma questo basterebbe per
un normale rettangolo: per una circonferenza, come mi devo comportare?
Ringrazio in anticipo per l'aiuto...
--
web http://madbob.homelinux.com
BrainTop Project maintainer
http://braintop.sourceforge.net
Inviato da www.mynewsgate.net
Rinux
2004-07-18 23:55:32 UTC
Permalink
Post by Also spreken Zaratustra
prendiamo il punto P(xg,yg) prolunghiamo da esso una retta verso il
centro del cerchio, se spostandoci su di essa verso il centro
incrociamo due volte la circonferenza, il punto è esterno, altrimenti
è interno!!!
perchè due?
se il punto è esterno incontra la circonferenza una volta, se è interno non
la incontra mai.

R.
Also spreken Zaratustra
2004-07-19 09:39:58 UTC
Permalink
Post by Rinux
Post by Also spreken Zaratustra
prendiamo il punto P(xg,yg) prolunghiamo da esso una retta verso il
centro del cerchio, se spostandoci su di essa verso il centro
incrociamo due volte la circonferenza, il punto è esterno, altrimenti
è interno!!!
perchè due?
se il punto è esterno incontra la circonferenza una volta, se è interno non
la incontra mai.
R.
Perchè oltrepasso il centro e continuo, se sono all'interno incrocio una
volta la circonferenza ed esco dal cerchio, se sono esterno entro una prima
volta e poi esco una seconda volta, sempre proseguendo sulla retta via oltre
il centro. Il bello è vedre il problema su una sfera, in questo caso il
metodo non è più valido.
Ciao e scusa se sono stato povero nella mia esposizione.
Rinux
2004-07-23 09:41:30 UTC
Permalink
Post by Also spreken Zaratustra
Perchè oltrepasso il centro e continuo, se sono all'interno incrocio
una volta la circonferenza ed esco dal cerchio, se sono esterno entro
una prima volta e poi esco una seconda volta, sempre proseguendo
sulla retta via oltre il centro. Il bello è vedre il problema su una
sfera, in questo caso il metodo non è più valido.
Ciao e scusa se sono stato povero nella mia esposizione.
Basterebbe fermarsi una volta raggiunto il centro, tanto dall'altra parte la
situazione è simmetrica ( se prima hai incontrato il bordo una volta lo
incontrerai anche dopo, se no no)

Oppure: controllo chi incontro prima tra bordo e centro: se incontro prima
il bordo il pt è ext, se prima il centro il pt è int.

Sulla sfera è uguale, no?

R.
giulio
2004-07-24 16:34:03 UTC
Permalink
Post by Roberto -MadBob- Guido
| |
y _____|__________
| | / \
| |/ \
| | |
| | |
| |\ /
| | \__/
| |
+----|----------
0 x
Fingete che questo sia un cerchio (spero che si veda bene, una volta
postato...) all'interno di un sistema di assi cartesiani.
x e y sono le coordinate delle rette (a coefficiente di angolazione 0)
tangenti alla circonferenza nei punti indicati, cioe' sugli estremi di
ascissa minore e ordinata maggiore, dunque sono a conoscenza della
posizione della circonferenza sul piano. Ne conosco inoltre il diametro.
Dato un punto specificato dalle coordinate X e Y, come posso sapere se
tale punto rientra nell'area della circonferenza?
Ovviamente x + d > X > x (stessa cosa per Y), ma questo basterebbe per
un normale rettangolo: per una circonferenza, come mi devo comportare?
Ringrazio in anticipo per l'aiuto...
--
web http://madbob.homelinux.com
BrainTop Project maintainer
http://braintop.sourceforge.net
Inviato da www.mynewsgate.net
arrivo per ultimo e forse hai già risolto.
conosci il cerchio date le due tang e il diametro quindi puoi
scrivere facilmente l'equ. del cerchio:
(x-Cx)^2+(y-Cy)^2-r^2=0
a questo punto se (X-Cx)^2+(Y-Cy)^2-r^2 < 0
il punto X,Y è dentro la circonferenza,
ma ho capito quello che volevi? ho letto in fretta.

--------------------------------
Inviato via http://arianna.libero.it/usenet/

Continua a leggere su narkive:
Loading...