Entwickler-Ecke

Multimedia / Grafik - Schnittpunkte von Kreis und Ellipse


Sven - Sa 06.03.04 18:04
Titel: Schnittpunkte von Kreis und Ellipse
Kennt jemand einen Algorythmus für die Schnittpunkte von Kreis mit Ellipse?

Ich habe schon gegoogelt und nichts gefunden :cry:


scrooge - Sa 06.03.04 20:55

Hab mal ne Frage zur Aufgabe: Willst du lediglich die Punkte finden, oder was ??


Ich Bins - So 07.03.04 13:25

Am einfachsten wäre es wenn du die Kriesgleichung und die Geradengleichung in folgender Form vorliegen hast:
Kreis: x² + y² = a
Ellipse: x²/a² + y²/b² = c

Wenn du jetzt beide Gleichungen nach y umformst und dann gleichsetzt kannst du ium Prinzip die Lösungen für x ausrechnen. Wenn du die X-Werte hast dürften die y-Werte kein Problem mehr sein, und dann hast du die Schnittpunkte.
Zumindest wenn ich dein Problem richtig verstanden habe


Gandalfus - So 07.03.04 13:51

Ich Bins hat folgendes geschrieben:

Ellipse: x²/a² + y²/b² = c

a= Nullstelle
b= y-Achse Schnittpunkt


Sven - So 07.03.04 18:43

Die Mittelpunkte von Kreis und Ellipse sind nicht identisch und ich habe auch keinen X oder Y-Wert.

Ich möchte die Funktion in meinem CAD-Programm verwenden.

Ich hätte da auch schon eine Idee, aber dann benötige ich, maximal, ~400 Schleifendurchläufe. Ich hatte gehofft es gebe da evtl. eine einfache mathematische Lösung.

Trotzdem Danke.


Seniman - So 07.03.04 21:28

Hallo,

maximal 400 Schleifendurchgänge? Das klingt nicht besonders optimal. Beschreib doch mal, wie genau du das machst. Das kann man bestimmt noch optimieren. Wenn die Koordinaten nicht gegeben sind, was ist denn dann gegeben??

Grüße
Seniman


Urba - Mo 08.03.04 02:50

Hallo,

Vielleicht hilft http://www.zum.de/Faecher/Materialien/rubin/Archiv/Extremwerte/Ell_Kreis/HTML_2/ellkreis2.html weiter

Urba


Sven - Mo 08.03.04 14:30

Seniman hat folgendes geschrieben:
Hallo,

maximal 400 Schleifendurchgänge? Das klingt nicht besonders optimal. Beschreib doch mal, wie genau du das machst. Das kann man bestimmt noch optimieren. Wenn die Koordinaten nicht gegeben sind, was ist denn dann gegeben??

Grüße
Seniman


Gegeben sind die Mittelpunkte, sowie die Radien von Kreis und Ellipse.

Meine Idee:

Ich fange an bei 0 Grad den Punkt auf der Ellipse zu berechnen (Routine vorhanden) anschließend prüfe ich den Abstand zum Kreismittelpunkt. Ist das Ergebnis größer liegt der Punkt ausserhalb des Kreises, ist er kleiner, so liegt dieser innerhalb des Kreises.
Ausgehend von dieser ersten Prüfung, prüfe ich nun in 1 Grad-Schritten, ob das Ergebnis nun innerhalb, oder außerhalb des Kreises liegt.
Beispiel: War der Punkt bei der ersten Prüfung außerhalb, und liegt nun innerhalb, gehen 1 Grad zurück und verringere die Schrittweite auf 1/10 des vorherigen Wertes. diesen Vorgang wiederhole ich z.B. 5 mal. Damit dürfte eine ausreichend große Genauigkeit erreicht werden.
Ausgehend von diesem Punkt versuche ich nun den zweiten Punkt auf demselben Wege zu ermitteln. Hat der zweite Punkt dieselben Kordinaten wie der erste handelt sich um eine Berührung und es gibt nur den einen Schnittpunkt.

Da im ungünstigsten Fall ein Umlauf stattfinden kann, sind dies 360 Vergleiche und dann noch für 0.1, 0.01, 0.001, 0.0001 Grad.
Also, 360 + 40 = 400.


Sven - Mo 08.03.04 14:32

Urba hat folgendes geschrieben:
Hallo,

Vielleicht hilft http://www.zum.de/Faecher/Materialien/rubin/Archiv/Extremwerte/Ell_Kreis/HTML_2/ellkreis2.html weiter

Urba


Danke, das hat aber mit meinem Problem nicht viel zu tun.


Gandalfus - Mo 08.03.04 15:14

Sven hat folgendes geschrieben:

Gegeben sind die Mittelpunkte, sowie die Radien von Kreis und Ellipse.

Erkläre mir doch bitte mal was du unter Radius einer Ellipse verstehst.


Sven - Mo 08.03.04 19:59

Gandalfus hat folgendes geschrieben:
Sven hat folgendes geschrieben:

Gegeben sind die Mittelpunkte, sowie die Radien von Kreis und Ellipse.

Erkläre mir doch bitte mal was du unter Radius einer Ellipse verstehst.


Ist die Kurzform für die beiden Halbachsen :D


Gandalfus - Mo 08.03.04 20:04

also sind a und b ja doch gegeben!?


Seniman - Mo 08.03.04 22:03

Hallihallo,
Mein Vorschlag:
Schnapp dir nen Bleistift und ein Blatt Papier stellt die Kreisgleichung und die Ellipsengleichen in abhängigkeit von den Mittelpunkt und den Radien/Halbachsen auf. Dann setz beide gleich. Dann solltest du den Schnittpunkt ausrechnen können. Danach kannst du das dann in Delphi Implementieren und vermutlich brauchst du dann gar keinen Schleifendurchlauf, sondern hast direkt eine Lösungsformel. Falls du Probleme mit den Gleichungen hast, dann melde dich.

Grüße
Seniman


Urba - Mo 08.03.04 23:08

Hallo,

Also 1.) Oben genannter Link kann dir schon viel bringen weil dort steht wie man die Schnittpunkte ausrechnet.

und 2.) @ Seniman : Ich habe aus dem besagten Link versucht auf eine Formel zu kommen. Ich treffe dabei an meine mathematischen Grenzen, da ich eine Gleichung bekomme die ich nicht lösen kann - entweder habe ich mich verrechnet oder es geht irgendwie anders. Wäre interessant wenn du deinen Vorschlag mal posten könntest

Urba


Ich Bins - Mo 08.03.04 23:24

Wenn der Mittelpunkt des Kreises die Koordinaten x1,y1 hat dann is die Kreisgleichung:

(x-x1)² + (y-y1)² = a² ; a...Radius des Kreises

Der Mittelpunkt der Ellipse hat die Koordinaten x2,y2, dann bekommste als Ellipsengleichung:

(x-x2)²/a² + (y-y2)²/b² = c ; a,b....Radien der Ellipse

a,b und c sind jeweils feste Parameter, x1,x2,y1,y2 sind die Koordinaten der Mittelpunkte von Kreis und Ellipse, also auch fest gegeben.
Jetzt musst du im Prinzip nur noch die beiden Gleichungen gleich setzen und bekommst die Koordinaten für die Schnittpunkte raus.


Urba - Di 09.03.04 00:38

genau so habe ich mir es auch überlegt. Probiers doch mal aus - ich bin zu keiner Lösung gekommen. Das heisst genauer ich bin zu einer Lösung gekommen, aber dort war dann x in so vielen verschiedenen Abhängigkeiten, dass es nicht lösbar war


Sven - Di 09.03.04 11:42

Also erst einmal Danke für eure Bemühungen. Ich habe jedoch das Problem, das ich nicht die höhere Töchterschule besucht habe.:lol: Deshalb wäre es nett von Euch, wenn Ihr das ganze in eine klare einfache Formel packen könntet, die auch meine Computer versteht.
Eigentlich frage ich nicht nach Code, aber dieses Problem mit Glecihsetzen, einsetzen usw. übersteigt meine einfachen mathematischen Realschul-Kenntnisse doch ein wenig.

Danke :D


Ich Bins - Di 09.03.04 18:29

Hm, merk grad das es doch schwerer zu lösen ist als ich gedacht hätte!

Das Problem ist das man nicht weiß wieviel Lösungen es gibt, und es sind bis zu 4 möglich, wodurch du ne Gleichung bekommst wo sowohl x^2 als auch Wurzel X drin vorkommt, und die bekommste net gelöst.
Von daher musste warhscheinlich doch mit nem Näherungsverfahren arbeiten. Sorry aber wüsst net wies sonst gehen könnte.


Urba - Di 09.03.04 18:37

Das Verfahren dass anfangs beschrieben wurde sieht doch nicht schlecht aus. Benutze das doch. Schreibe einfach ne Funktion in der die Genauigkeit (z.B.) übergeben wird und du sie dann rekursiv aufrufen kannst - damit ersparst du dir die 400! Schleifen

Urba