![]() |
---|
Hallo, Ich bekomme aus einer Funktion, 3D-Punkte die einen Kreis oder Kreisausschnitt beschreiben. Des Weiteren habe ich noch: 1. Die Ebene in der sich der Kreis oder Kreisausschnitt befindet 2. Das Zentrum des Kreises oder Kreisausschnitts 3. Den Radius des Kreises oder Kreisausschnitts Mein Problem ist das die Punkte nicht sortiert sind. Beispiel: Kreisausschnitt Startwinkel = 0 Endwinkel = PI GUZ Der Startpunkt und Endpunkt des Kreises befinden sich nicht auf erster und letzter Position, sondern können überall in dieser Liste sein. Ich benötige einen Ansatz wie man so was sortieren könnte. Beste Grüße 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: Online-Übungen (Übungsaufgaben) bei unterricht.de: |
![]() |
![]() |
GUZ ??? Kreisauschnitt ?? Meinst du nicht eher "Kreisbogen"? Oder verstehst du unter "Kreis" auch die Kreisfläche und nicht die Kreislinie? Was wäre der Sinn und Zweck dieses Sortierens? Anfangs und Endpunkt des vorliegenden Kreisbogens zu bestimmen? Denn sonst scheint ja alles bekannt zu sein (Kreismittelpunkt, -radius und -ebene). Wenn du von Start- und Endwinkel sprichst, so fehlt noch die Info in Bezug worauf - also welche Richtung ist als Winkel 0 definiert und in welchem Umlaufsinn wird gemessen. Das ist bei einem allgemeinen Kreis im ja nicht so klar. Grundsätzlich könntest du ja für jeden Punkt deiner Liste den Winkel der Verbindung von Kreismittelpunkt und Punkt zu dieser Grundlinie berechnen und danach ordnen. Ich nehme an, dass es sich um einen Tippfehler handelt, wenn du im Betreff anstelle von schreibst. |
![]() |
Ich meine einen Kreisbogen ( Die Linie vom Kreis ) Der Winkelbezug ist immer Mitte Kreis. Der Sinn liegt eben darin zu wissen wo der Kreis beginnt und wo er endet! Den Ansatz, den Winkel zu berechnen hatte ich auch. Das geht nicht wirklich weil die Punkte aus der Liste den Kreis definieren aber unterschiedliche Abstände zu einander haben. |
![]() |
Der Winkelbezug ist immer Mitte Kreis. Was soll das heißen? Die Bezugsgerade muss eine bestimmte, eben noch irgendwie zu definierende, Gerade (genauer: Halbgerade oder Strahl) in der Kreisebene durch den Kreismittelpunkt sein. Im Grunde kannst du sie ja beliebig festlegen. Das geht nicht wirklich weil die Punkte aus der Liste den Kreis definieren aber unterschiedliche Abstände zu einander haben. Der Abstand der Punkte voneinander ist doch völlig egal! Du kannst doch den Kreismittelpunkt mit jeden Punkt verbinden und dann für jede dieser Strahlen den Winkel zur Bezugsgeraden ermitteln. |
![]() |
Hei, das war jetzt ewig auf Eis. Jetzt muss ich das noch mal aufrollen. Ich hab eine Skizze eingefügt um das Problem besser zu beschreiben. Wenn der und Wert der Boundingbox gleich ist, dann handelt sich es um einen Kreis, wenn nicht dan ist es eben ein Kreissegment ( Alpha ° ) Die Punkte in der Liste sind nicht sortiert wie in der Skizze dargestellt. Das Problem ist den Anfangs- und Endpunkt zu bekommen. Grus |
![]() |
Leider erklärst du ein wenig dürftig. Was willst du denn als "Anfang" und "Ende" eines Kreises ansehen? Ich habe einen Verdacht / eine These: Willst du den größten Winkel zwischen zwei benachbarten Punkten als 'Öffnungswinkel' verstehen? Also die Punkte, die den größten Winkelabstand voneinander haben, als 'Anfang' und 'Ende' verstehen? |
![]() |
Es gibt bei einem Kreis keinen "Anfangs-" und "End-"Punkt. Auch dann nicht, wenn durch eine Bounding Box Teile des Kreises weggeschnitten werden, denn da können ja bis zu vier verschiedene und getrennte Kreisbögen entstehen, jeder mit eigenem "Anfang" und "Ende". Du könntest dir drei beliebige Punkte wählen und damit die Koordinaten des Kreismittelpunkts bestimmen. EDIT: Dieser Schritt erübrigt sich, wenn du, so wie in deinem Initialposting geschrieben, den Mittelpunkt ohnedies kennst. Danach wählst du einen beliebigen Punkt deines Punkthaufens als (vorläufigen) Anfangspunkt und bestimmst für jeden weiteren Punkt des Haufens den Winkel . Dabei ist eine einheitliche Orientierung zu beachten und der Winkel muss im Bereich bestimmt werden. Wenn du jetzt die Punkte nach diesen Winkeln ordnest, dann sind sie schon mal in der richtigen Reihenfolge. Jetzt kannst du dann evt. noch deine Bounding Box ins Spiel bringen und die geordnete Liste in sich verschieben um einen für deine Zwecke geeigneten "Anfangs"punkt zu wählen. |
Diese Frage wurde automatisch geschlossen, da der Fragesteller kein Interesse mehr an der Frage gezeigt hat.
|