![]() |
---|
Hallo, ich benötige eher eine Idee als eine Lösung, wobei letzteres auch schön wäre. Gegeben: . . Ich möchte zunächst die Kreise und betrachten und berechne die Schnittmenge, zB durch Gleichsetzen. Wenn nun ein 3. Kreis dazu kommt könnte ich 3 Gleichungen Gleichsetzen. Nun weiß ich aber vorher nicht wieviele Kreise kommen und ich möchte bei jedem neuen Kreis nicht alle anderes Kreise anschauen müssen, da ich das auf dem Computer in einem Algorithmus anwenden möchte. Die Laufzeit spielt eine große Rolle. Hintergrund: Ich möchte bei gegebenen Kugeln im herausfinden, ob diese mit einer Toleranz 1 hintereinander liegen auf einer Geraden. Dabei gibt es den Punkt der fix und ohne Toleranz ist. Die Gerade geht also von durch alle Kugeln bzw. ich möchte wissen, ob es eine Gerade gibt, die durch alle Kugeln geht und natürlich durch . Ich muß sicherstellen, dass alle Kugelmittelpunkte die maximale Entfernung 1 zur Gerade haben und für letztere muß mit jeder Kugel eine neue Lage berechnet werden. Oben versuche ich das Problem auf den Fall zu reduzieren indem ich erstmal einen erlaubten Bereich (=Schnittmenge aller Kreise) berechne und eine Ebene definiere, die orthogonal zu meiner Geraden liegt.Dort können dann die Kugeln als Kreise abgebildet werden. Ideen sind nun gefragt! Gruß Christian Für alle, die mir helfen möchten (automatisch von OnlineMathe generiert): "Ich möchte die Lösung in Zusammenarbeit mit anderen erstellen." |
Hierzu passend bei OnlineMathe: Kreiszahl (Mathematischer Grundbegriff) Kreis (Mathematischer Grundbegriff) Elementare Kreisteile (Mathematischer Grundbegriff) Online-Übungen (Übungsaufgaben) bei unterricht.de: Grundbegriffe der ebenen Geometrie Kreis und Mittelsenkrechte Kreis: Umfang und Flächeninhalt Kreise und Lagebeziehungen Mengenlehre Thaleskreis, Umkreis, Inkreis und Lage von Kreis und Gerade |
![]() |
![]() |
moin Meine Idee ist simpel . du nimmst i-einen Kugel von denen mit MittelPunkt . und der Punkt sei . jetzt kann man eine Gerade zwischen und bilden Punkte bestimmen nur eine Gerade ) . die sieht im Raum so aus : es bleibt nur noch zu prüfen ob der Abstand aller Mittelpunkten von dieser Gerade ist . dafür gibt es ja Formel. Abstand Punkt-Gerade Gruß Arow |
![]() |
Hallo Arow, daran habe ich auch schon gedacht. Damit würde aber die erste Kugel schon meine gerade festlegen. Damit würde ich den Lösungsraum verkleinern, da es sein könnte, dass die Gerade auch in der ersten Kugel schon den Abstand 1 hat, weil folgende Kugeln nicht auf liegen. weil ich die gerade nicht festlegen kann wollte ich von Kugel zu Kugel berechnen was der Lösungsraum ist. Daher müßte die Gerade von Kugel zu Kugel neu berechnet werden und ich muß für diese dann prüfen, ob sie im erlaubten (=bisherigen) Lösungsraum liegt. Wenn nicht, dann gibt es keine Gerade mehr und ich kann den Algorithmus stoppen, sonst mache ich weiter bis ich eine Kugel finde die nicht mehr auf der Geraden liegt: 1. setze 2. berechne erlaubten Bereich für die Gerade von nach aus der Tangentenschar mit allen Tangenten von die durch laufen - für die Toleranz) 3. Addiere neue Kugel und berechne neuen erlaubten Bereich aus der Tangentenschar mit allen Tangenten von die durch laufen - für die Toleranz) 4. Berechne so dass sie innerhalb des erlaubten Bereiches liegt 5. prüfe, ob existiert wenn ja: goto 2. wenn nein goto 4. 4. Beginne von neuem mit neuen Kugeln Hier ergeben sich die folgenden Schwierigkeiten: die erlaubten Bereiche sind Schnittmengen sehr schwer zu berechnen die Gerade innerhalb des erlaubten Bereiches ist schwer zu berechnen Ich dachte schon an Regressionsgeraden, aber da bin ich nicht wirklich weiter gekommen. Christian |
![]() |
Evtl. ginge auch so eine Lösung: Eine Gerade durch im kann durch Punkt, Richtung und Abstand dargestellt werden, wobei die Richtung aus 2 Winkel und besteht (Kugelkoordinaten): Umrechnung von kart. nach Kugelkoordinaten (mit seien die Kugelmittelpunkte): zur Vereinfachung, da nicht im Ursprung liegt: arccos arctan2 (arctan2 siehe en.wikipedia.org/wiki/Atan2 Nun könnte ich für jeden Richtungswinkel folgende Formel anwenden: wobei . das kleinste aller bisheriger Kugeln ist. Anschaulich: Ich möchte jeweils immer die Winkelhalbierende der Punkte nehmen, die am weitesten entfernt liegen, jeweils für die Komponente und . Pseudo-code: 0. 1. Berechne neue Kugel die Geradenwinkel und 2. Prüfe ob und die Winkel oder ändert 3. Falls nein, goto 4. Falls ja, goto 5. 4. Prüfe, ob die Gerade berührt 5. Falls ja goto sonst goto 8. 6. Prüfe ob alle die Gerade berühren 7. Falls ja, goto falls nein goto 8. 8. Beende Berechnung der Geraden und beginne komplett neu Problem: Von der Rechenzeit ist es unschön jedesmal alle Punkte prüfen zu müssen, ob sie die Gerade berühren. Ist das ein gangbarer Weg? Christian |
![]() |
hallo Zitat 1. "Damit würde aber die erste Kugel schon meine gerade festlegen. Damit würde ich den Lösungsraum verkleinern, da es sein könnte, dass die Gerade auch in der ersten Kugel schon den Abstand 1 hat, weil folgende Kugeln nicht auf liegen." ich fürchte ich verstehe dich nicht gut. was meinst du mit "Lösungsraum verkleinern "? 2. " es könnte sein, dass die Gerade auch in der ersten Kugel schon den Abstand 1 hat, weil folgende Kugeln nicht auf liegen" ist doch prima wenn die nächste Kugel den Abstand hat ,wäre ja optimal .dann muss man nicht weiter prüfen . 3. deine 2. Lösung ist nach dem Verfahren ->" Warum einfach , wenn es auch schwerer geht ? " |
![]() |
Hallo Arrow, du hast Recht, bisher ist alles sehr kompliziert. Ich finde keine andere Lösung. Vielen Dank für deine Hilfe! Ich versuche auf deine Fragen zu antworten (bin in der Arbeit, daher heute Abend evtl. mit Zeichnung): Zitat 1. "Damit würde aber die erste Kugel schon meine gerade festlegen. Damit würde ich den Lösungsraum verkleinern, da es sein könnte, dass die Gerade auch in der ersten Kugel schon den Abstand 1 hat, weil folgende Kugeln nicht auf liegen." ich fürchte ich verstehe dich nicht gut. was meinst du mit "Lösungsraum verkleinern "? Antwort: Nun, wenn ich bei der ersten Kugel schon die Linie festlege, obwohl sie eine Toleranz haben darf, dann schränke ich mögliche Lösungen ein. Wenn ich mir vorstelle, dass ich irgendweine Gerade finden muss die duch und die Kugeln geht, dann kann ich diese Gerade zu jedem Zeitpunkt neu festlegen. Wenn ich mir also 2 Kugeln vorstelle, die sich gerade berühren, und die Gerade läuft von durch Mittelpunkt der 1. Kugel, dann gibt es Fälle, wo die Gerade nicht durch die 2. Kugel läuft. Wenn ich die Gerade neu berechne schon. Wenn dem so ist schränke ich mir den Lösungsraum ein. 2. " es könnte sein, dass die Gerade auch in der ersten Kugel schon den Abstand 1 hat, weil folgende Kugeln nicht auf liegen" ist doch prima wenn die nächste Kugel den Abstand hat ,wäre ja optimal .dann muss man nicht weiter prüfen . Antwort: Schon, allerdings versuche ich ja eine Gerade durch zu legen, und nicht Fälle zu finden, wo dies nicht möglich ist. Obiger Fall könnte eintreten, wenn ich die Gerade mit Kugel . neu berechne und am Ende sich herasustellt, dass alle Kugeln nacheinander liegen, is auf die erste. Die erste könnte eine Position immernoch im Abstand 1 zur Geraden einnehmen, während die anderen alle auf bzw. nahe der neu berechneten Geraden liegen. 3. deine 2. Lösung ist nach dem Verfahren ->" Warum einfach , wenn es auch schwerer geht ? " Antwort: Deshalb versuche ich eine möglichst einfache Lösung zu finden..... Ich bin für jede Idee dankbar und gehe alle Möglichkeiten nach! Christian |
![]() |
hallo Christian wenn ich die Aufgabe gut verstehe , du sollst einen Alg. schreiben ,der prüft ,ob die Kugel auf einer Linie liegen (mit Toleranz .Die Rückgabe dieses Alg. ist Ja die sind auf einer Gerade oder nein sind sie nicht. "wenn ich bei der ersten Kugel schon die Linie festlege, obwohl sie eine Toleranz haben darf, dann schränke ich mögliche Lösungen ein. " das musst du dir noch mal überlegen. Toleranz hat mit nichts zu tun. siehe Bild mag sein verstehst du mich dann besser. |
![]() |
Hallo Arrow, nicht ganz aber ich versuche die Aufgabe zu beschreiben: Aufgabe: Ich bekomme eine Liste von Punkten im Raum. Die Punkte beschreiben entweder eine Linie, einen Kreis oder keines von beiden also unbestimmt. Nun können es Punkte und mehr sein. Anforderungen: 1. Kurze Laufzeit 2. der erste Punkt muß auf der Linie liegen 3. alle anderen Punkte dürfen einen maximalen Abstand von 1 haben Den Kreis konnte ich schon lösen. die vermeintlich einfache Aufgabe Linie nicht. Hier habe ich eine Zeichnung, die ich glaube, dass sie nach deinem Ansatz zu einem "Nein, nicht auf der Linie" führt und bei meinem finde ich eine Lösung. ...Bild gezeichnet... und mir ist aufgefallen, dass mein obiger Ansatz auch icht funktioniert... da ich die 2 Kugeln, die den größten und kleinsten Winkel aufweisen als Winkelhalbierende verwende. Daher habe ich hier vielleicht auch gleich eine zweite Zeichnung. Hier müßte man die Abstände zu der Geraden ermitteln (kein Problem) und die Gerade y=mx+t so berechnen, dass der Abstand eben ist. Im und Punkt und sei die Richtung der Geraden. Also mit Winkel zwischen und . Mit Also mit arcsin Christian |
![]() |
Hallo Arrow, du würdest einfach die Linie mit dem neuen Mittelpunkt verbinden und prüfen, ob die anderen Kugelmittelpunkte in der Toleranz liegen. Richtig? Gruß Christian |
![]() |
Vielen Dank Arrow, deine Fragen haben mich auf die richtige Lösung gebracht. Anbei Bilder mit Lösung! Christian |