PDA

View Full Version : [JAVA] Trovare punti intersezione di 2 circonferenze


mone.java
11-08-2008, 14:44
Come faccio a trovare i punti di intersezione tra due circonferenze con java, avendone la psizione x e y sul piano ed il raggio???
Grazie mille

71104
11-08-2008, 15:14
non è un problema di Java, è un banalissimo problema di geometria analitica.

siano (x1, y1) e (x2, y2) i centri delle due circonferenze, e r1 ed r2 i rispettivi raggi; valgono le seguenti equazioni:

y = y1 ± sqrt(r1² - (x - x1)²), x1 - r1 ≤ x ≤ x1 + r1

y = y2 ± sqrt(r2² - (x - x2)²), x2 - r2 ≤ x ≤ x2 + r2

dove x e y sono le coordinate di un generico punto su una delle due circonferenze, ed "sqrt" è la funzione che esprime la radice quadrata. per trovare i punti comuni alle due circonferenze (se esistono) basta eguagliare le due equazioni e risolvere l'equazione risultante:

y1 ± sqrt(r1² - (x - x1)²) = y2 ± sqrt(r2² - (x - x2)²)

y1 - y2 = ±sqrt(...) ± sqrt(...)

(y1 - y2)² = (±sqrt(...) ± sqrt(...))²

y1² + y2² - 2∙y1∙y2 = r1² - (x - x1)² + r2² - (x - x2)² ± sqrt((r1² - (x - x1)²) ∙ (r2² - (x - x2)²))

y1² + y2² - 2∙y1∙y2 - r1² + (x - x1)² - r2² + (x - x2)² = ±sqrt((r1² - (x - x1)²) ∙ (r2² - (x - x2)²))

(...)² = (r1² - (x - x1)²) ∙ (r2² - (x - x2)²)


da qui in poi i calcoli iniziano ad essere pesantucci :D percui te la finisci da solo :p

una volta che hai trovato la x (potresti trovare 0, 1 o 2 valori, a seconda che le due circonferenze siano rispettivamente esterne, tangenti o secanti) basta che la usi in una qualsiasi delle due equazioni originali per ricavare la y.

mone.java
11-08-2008, 19:17
Grazie, ma il problema è implementare tale algoritmo con java.... :huh:

ndakota
11-08-2008, 19:54
bah alla fine ti dovrebbe venire fuori un mega formulone che poi potrai mettere tutto in un'istruzione.. non penso sia l'algoritmo la difficoltà..

mone.java
25-08-2008, 11:11
Ciao, scusate per il ritardo ma ero in vacanza.
Cmq non riesco a capire come fare in java tutto ciò, la parte di geometria analitica la conoscevo (l'ho fatta l'anno scorso in 3° superiore e anche quest'anno in 4° per recuperare il debito di 3° riguardo la suddetta unità) comunque quello che mi manca è il passaggio in java.
Qualcuno può aiutarmi???
grazie