Autor |
Beitrag |
Sven
      
Beiträge: 314
D6 Ent, K3 Pro (patched)
|
Verfasst: Sa 06.03.04 18:04
Kennt jemand einen Algorythmus für die Schnittpunkte von Kreis mit Ellipse?
Ich habe schon gegoogelt und nichts gefunden 
_________________ MDK 9.1, Kernel 2.4.21, KDE 3.1 Kylix 3 Pro (patched), nutze aber auch Windows
|
|
scrooge
      
Beiträge: 200
|
Verfasst: Sa 06.03.04 20:55
Hab mal ne Frage zur Aufgabe: Willst du lediglich die Punkte finden, oder was ??
|
|
Ich Bins
      
Beiträge: 197
Win XP Prof
D5 Prof
|
Verfasst: 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
_________________ Diese Nachricht wurde mit einer Taschenlampe in das offenliegende Ende eines Glasfaserkabels gemorst!
|
|
Gandalfus
      
Beiträge: 129
|
Verfasst: So 07.03.04 13:51
Ich Bins hat folgendes geschrieben: |
Ellipse: x²/a² + y²/b² = c
|
a= Nullstelle
b= y-Achse Schnittpunkt
_________________ Wennn man feststellt, dass es drei Moeglichkeiten gibt, die einen Vorgang schiefgehen lassen koennen und man diese ausschaltet, entstehen automatisch drei neue Moeglichkeiten.
|
|
Sven 
      
Beiträge: 314
D6 Ent, K3 Pro (patched)
|
Verfasst: 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.
_________________ MDK 9.1, Kernel 2.4.21, KDE 3.1 Kylix 3 Pro (patched), nutze aber auch Windows
|
|
Seniman
      
Beiträge: 42
D6 Pers
|
Verfasst: 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
      
Beiträge: 47
|
Verfasst: Mo 08.03.04 02:50
_________________ Es gibt keine blöden Fragen, nur blöde Antworten
|
|
Sven 
      
Beiträge: 314
D6 Ent, K3 Pro (patched)
|
Verfasst: 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.
_________________ MDK 9.1, Kernel 2.4.21, KDE 3.1 Kylix 3 Pro (patched), nutze aber auch Windows
|
|
Sven 
      
Beiträge: 314
D6 Ent, K3 Pro (patched)
|
Verfasst: Mo 08.03.04 14:32
Danke, das hat aber mit meinem Problem nicht viel zu tun.
_________________ MDK 9.1, Kernel 2.4.21, KDE 3.1 Kylix 3 Pro (patched), nutze aber auch Windows
|
|
Gandalfus
      
Beiträge: 129
|
Verfasst: 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.
_________________ Wennn man feststellt, dass es drei Moeglichkeiten gibt, die einen Vorgang schiefgehen lassen koennen und man diese ausschaltet, entstehen automatisch drei neue Moeglichkeiten.
|
|
Sven 
      
Beiträge: 314
D6 Ent, K3 Pro (patched)
|
Verfasst: 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 
_________________ MDK 9.1, Kernel 2.4.21, KDE 3.1 Kylix 3 Pro (patched), nutze aber auch Windows
|
|
Gandalfus
      
Beiträge: 129
|
Verfasst: Mo 08.03.04 20:04
also sind a und b ja doch gegeben!?
_________________ Wennn man feststellt, dass es drei Moeglichkeiten gibt, die einen Vorgang schiefgehen lassen koennen und man diese ausschaltet, entstehen automatisch drei neue Moeglichkeiten.
|
|
Seniman
      
Beiträge: 42
D6 Pers
|
Verfasst: 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
      
Beiträge: 47
|
Verfasst: 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
_________________ Es gibt keine blöden Fragen, nur blöde Antworten
|
|
Ich Bins
      
Beiträge: 197
Win XP Prof
D5 Prof
|
Verfasst: 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.
_________________ Diese Nachricht wurde mit einer Taschenlampe in das offenliegende Ende eines Glasfaserkabels gemorst!
|
|
Urba
      
Beiträge: 47
|
Verfasst: 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
_________________ Es gibt keine blöden Fragen, nur blöde Antworten
|
|
Sven 
      
Beiträge: 314
D6 Ent, K3 Pro (patched)
|
Verfasst: 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.  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 
_________________ MDK 9.1, Kernel 2.4.21, KDE 3.1 Kylix 3 Pro (patched), nutze aber auch Windows
|
|
Ich Bins
      
Beiträge: 197
Win XP Prof
D5 Prof
|
Verfasst: 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.
_________________ Diese Nachricht wurde mit einer Taschenlampe in das offenliegende Ende eines Glasfaserkabels gemorst!
|
|
Urba
      
Beiträge: 47
|
Verfasst: 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
_________________ Es gibt keine blöden Fragen, nur blöde Antworten
|
|