Frage von Namno, 35

Wie kann ich diese Punkte mathematisch sortieren?

Hallo,

ich bin grade am schreiben eines kleinen Programms, bei dem ich folgende Problemstellung bekomme:

Ich habe sagen wir 20 verschiedene Punkte in einem zweidimensionalen Koordinatensystem, die alle auf einem Kreis liegen. Diese Punkte sind völlig unsortiert. Jetzt brauche Ich eine Methode, mit der ich die Punkte automatisch sortieren kann, und zwar so, dass ich sie am Ende in der richtigen Reihenfolge habe. Wie kann ich das bewerkstelligen? Es ist dabei übrigens egal, bei welchem Punkt man anfängt, oder in welche Richtung es geht.

Expertenantwort
von Suboptimierer, Community-Experte für Mathematik, 27

rechne doch über den Tangens den Winkel zum Punkt aus und sortiere die Punkte nach dem Winkel aufsteigend. Eventuell musst du jeden Quadranten gesondert berücksichtigen, da atan nicht eindeutig ist.

Kommentar von Namno ,

Es tut mir leid, dass ich mich damit nicht auskenne, aber könntest du bitte den Begriff "Tangens" erklären? Wikipedia ist da mal wieder so aufschlussreich wie ein hybrid verschlüsselter Text...

Kommentar von Suboptimierer ,

Ein Punkt wird normalerweise als x-y-Koordinate angegeben. Beispiel P(1|2)

Es gibt aber auch eine andere Darstellungsart, nämlich in Polarkoordinaten. (Ich schreibe mal jetzt so aus dem Gedächtnis, ohne nachzuschlagen:)

Dazu brauchst du nur die Entfernung zum Punkt und den Winkel.

Der Winkel berechnet sich so:

tan(alpha) = y/x
alpha = atan(y/x)

Im Beispiel ist atan(2) = alpha = 63,43°

Wenn nun zwei Punkte auf der gleichen Gerade durch den Ursprung liegen, kannst du sie über die Distanz sortieren.

Die Entfernung zum Ursprung ist Wurzel( x² + y² ).

Im Beispiel: Wurzel( 1² + 2²) = Wurzel(5) = 2,24

Wiki Polarkoordinaten: https://de.wikipedia.org/wiki/Polarkoordinaten

Kommentar von Namno ,

Ich denke, das mit dem Winkel wird Reichen. Also wenn man davon ausgeht, dass die Mitte des Kreises auf dem Ursprung liegt und Ein Punkt, dessen Winkel ich dann berechnen will auf Q(2|2) liegt, müsste ich dann einfach so rechnen?

atan(2/2) = winkelergebnis

Kommentar von Suboptimierer ,

Ja, prinzipiell schon, aber in deinem Beispiel sieht man sogar direkt, dass (2|2) auf der Halbierenden des Quadranten liegt, also bei 45°.

Kommentar von Namno ,

Ok, Danke :) Mit direkt sehen kann ich leider in meinem Programm nichts anfangen, dem muss man mit Formeln kommen ;)

Kommentar von Suboptimierer ,

Bitteschön!

Keine passende Antwort gefunden?

Fragen Sie die Community