PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Schnittpunkte zweier Kreise


scope
20.09.2002, 21:26
Hi Leute,

wie kann man die Schnittpunkte zweier Kreise in einem Koordinatensystem berechnen, wenn man nur die Mittelpunkte der Kreise sowie den Radius beider Kreise kennt?

Bitte dringend um Hilfe!

Vielen Dank, für jede Information!

Ciao Scope


MrEasy
20.09.2002, 22:00
zuerst die 2 kreisgleichungen anhand formel aufstellen:
k1: (x - x-koordinate)^2 + (y - y-koordinate)^2 = r^2
k2: genauso: (x - x-koordinate)^2 + (y - y-koordinate)^2 = r^2

dann jeweils mit binomischer formel ausrechnen und durch subtraktion der beiden gleichungen eine variable eleminieren -> daraus folgt eine geradengleichung der form: y = a*x+b
durch einsetzen dieser gleichung in eine der beiden kreisgleichungen erhält man schliesslich und endlich die null, eins oder 2 möglichen schnittpunkte

bei weiteren fragen: Mathe-Buch der 10. Klasse ;)

scope
21.09.2002, 00:40
Hallo MrEasy,

wow, das ging aber flott ;-)

also, meine beiden Kreisgleichungen:

(x-2)²+(y-3)² = 1
(x-4)²+(y-2)² = 4

nun gleichstellen:

(x-2)²+(y-3)² -1 = (x-4)²+(y-2)² -4

nach ausrechnen und kürzen:

y = 2x-2

So, aber wo soll ich die neue Gleichung einsetzen? Ich setze sie mal bei der ersten Kreisgleichung ein:


(x-2)²+(y-3)² -1 = 0

-> 5x² -24x +28 = Y

Stimmt das? Und wie gehts weiter, damit ich die beiden Schnittpunkte ermitteln kann?

Vielen Dank, für weitere Unterstützung!

Viele Grüße

Ciao Scope


PS.:du brauchst nicht nachrechnen, nimm's einfach als richtig ausgerechnet an. Mir geht es nur ums Prinzip.

MrEasy
21.09.2002, 12:08
wenn du y = 2x - 2 in der kreis einsetzt, dann hast du danach kein y mehr in der gleichung; da haste was falsch
(x-2)² + (2x-2-3)² -1 = 0
-> x² - 4x + 4 + 4x² - 10x + 25 - 1 = 0
-> 5x² -14x + 28 = 0

und dann mitternachtsformel ;)

5x² -14x + 28 = 0
ist eine gleichung, die entweder 0, eine, oder 2 (reelle) lösungen hat (is ja auch klar, die kreise können sich gar nicht schneiden oder gerade berühren oder eben richtig schneiden)

also: (stell dir das (1) als tiefergestellte 1 vor)
eine gleichung der form a*x² + b*x + c = 0 löst man mit der formel:

x(1)(2) = ( (-1) * b +- wurzel(b² - 4*a*b) ) / ( 2 * a )

Codeq
21.09.2002, 12:50
man kann auch aus der 1' Ableitung der Gleichgesetzten Gleichung der Schnittpunkte das Integral von y nach dx von Punk1 bis Punk2 bilden... dann hat man auch die Fläche.. ist ne spur genauer der wert..

scope
22.09.2002, 18:32
Danke an alle!!!!

Habs doch noch gecheckt! *freu*

Viele Grüße

Ciao Scope

flo1977
13.01.2004, 16:48
hallo ihrs...

sorry, dass ich dieses uralte thema wieder ausgrabe, aber ich habe probleme bei der umsetzung der oben genannten schritte unter java...

der weg an sich ist mir vollkommen klar und auf einem blatt papier könnte ich dies auch ohne weiteres ausrechnen. aber das ganz in quellcode zu packen ist nochmal ne herausforderung für sich.

oder steh ich jetzt nur aufm schlauch???

geetz
flo

scope
16.01.2004, 03:05
Hallo Flo1977,

ja, da geb ich dir recht! Bis jetzt war es meine größte mathematische Herausforderung in C, -aber es hat (dank euch) perfekt geklappt ;-)

Hm, ich schätze mal, dass du Probleme hast, in einem Programm mit unbekannten Größen zu rechenen. Also ich meine z. B. 5y mal eine integer Variable etc... Oder den PC beizubringen, zwei Seiten einer Gleichung zu kürzen etc...

Damals habe ich solche (notwendigen) Operationen mit Unbekannten mit einem Array gelöst. Dieses Array bildete meine Gleichung mit den Unbekannten ab. Hm, schwierig zu beschreiben aber hier ein Beispiel:

Die Aufgabe:

5x + 3y = 15

Um diese obrige Gleichung weiter verarbeiten zu können habe ich Sie in einem Array abgebildet:

Also nochmal ausführlich:

(5 mal x) + (3 mal y) = 15
(a mal b) + (c mal d) = e

Array[0] (entspricht a) = 5
Array[1] (entspricht b) = x
Array[2] (entspricht c) = 3
Array[3] (entspricht d) = y
Array[4] (entspricht e) = 15

Nur mal so grob, damit es einigermaßen nachvollziehbar ist.

So, da es ja bekannt ist, wie die einzelnen Felder des Arrays miteinander verrechnet werden (sonst würde es ja nichts zu rechnen geben), kann man das Array[] gleich initialisieren:


(5 mal x) + (3 mal y) = 15
(a mal b) + (c mal d) = e
1 mal 5x + 1 mal 3y = 15

Array[0] (entspricht a) = +1
Array[1] (entspricht b) = +5
Array[2] (entspricht c) = +1
Array[3] (entspricht d) = +3
Array[4] (entspricht e) = +15

Nun hast Du die Gleichung in einem Array abgebildet, mit dem sich dann weiter arbeiten lässt.

Nehemen wir mal an, es kommt nochmal so eine Gleichung daher:

8y - 3x = 10
(8 mal y) + (-3 mal x) = 10
(c mal d) + (-a mal b) = e
1 mal 8y + -1 mal 3x = 10

Array2[0] (entspricht wieder a) = -1
Array2[1] (entspricht wieder b) = +3
Array2[2] (entspricht wieder c) = +1
Array2[3] (entspricht wieder d) = +8
Array2[4] (entspricht wieder e) = +10

So jetzt hast Du zwei Arrays (Array[] und Array2[]) bei denen jedes einzelne Element einen Operanden wiederspiegelt! Und es kommen ja auch mehrere Operanden der gleichen Art vor. (z. B. "x" in Array[1] und in Array2[1]) D. h. Du kannst jetzt mit den beiden Gleichungen machen was Du willst. Gegenseitig kürzen bzw. zusammenfassen usw...

Irgendwann kommen dann auch die Unbekannten "x" und "y" (also b und d (a,c,e kennst Du ja schon)). Dann musst Du nur noch Array[1] * b und Array2[1] * b für x durchführen bzw. Array[3] * d und Arry2[3] * d für y durchführen. -nur ein Beispiel zur Verdeutlichung! Es kann auch sein, dass sich schon einige Unbekannten aufgehoben haben, dann haben halt die entsprechenden Felder in den Arrays eine 0 drin!

Dies obrige war nur als Beispiel, bei meinem damaligen Projekt waren die Arrays deutlich länger. Aber ich konnte mit allem Rechnen was ich brauchte (Binomische Formeln, Mitternachtsformel etc...)

Also, ich hoffe Dir ein bischen geholfen zu haben. Das war nur meine Idee (vielleicht ist dies ja völlig umständlich) aber es funktionierte bei mir perfekt!!

Und noch eins, wenn Du dies so machen willst, dann arbeite mit Kommentaren im Quelltext! Ansonsten wird es sehr schwierig den Quellcode "noch unter Kontrolle" zu haben, wenn Du einmal kurz Deine Augen beim Niesen schließt! ;-)

Also, viel Erfolg!

Ciao scope

LeToyRider24
20.09.2004, 16:49
Hallo erstmal, alle miteinander!

Kann ich das Problem auch in einer Excel-Tabelle lösen? Am besten ohne Makros, oder so was, bin nämlich nicht so der checker auf dem Gebiet. Danke!

scope
20.09.2004, 19:13
Hallo, in einer Excel-Tabelle? Auch noch ohne Makro?

?? ;-)