2016-05-06 15 views
0
  1. eine Verteilung einer diskreten Anzahl N von Winkelwerten in dem Intervall [0: 360]
  2. Karte diese N Werte auf einen Einheitsumfang.
  3. Ermitteln Sie automatisch die zwei Werte, zwischen denen alle anderen Werte liegen.

Gibt es eine allgemeine Lösung?Discrete einheitliche kreisförmige Verteilung

enter image description here

Antwort

0

Eine Möglichkeit wäre es, den mittleren Winkel zu berechnen, subtrahieren diese von allen Ihren Winkel, immer ein Ergebnis zwischen -Kreis/2 und Kreis/2 (wo zB Kreis ist 2pi wenn Sie Radiant verwenden) und nimm den Bereich zu sein (Mittelwinkel + Min, Mittelwinkel + Max).

Dies könnte auf mindestens zwei Arten scheitern: Sie könnten einen mittleren Winkel (was ist der Mittelwert von Norden, Osten, Süden, Westen?) Und die Min und Max könnte -circle/2 und Kreis/2 finden entsprechend, also wäre deine Reichweite der ganze Kreis.

Ich denke, der "richtige" Weg zur Berechnung des mittleren Winkels besteht darin, alle Winkel in Einheitsvektoren umzuwandeln, den Durchschnitt von diesen zu nehmen und atan2 zu verwenden, um die Orientierung des Mittelvektors zu finden; das ist der mittlere Winkel. Beachten Sie jedoch, dass im Beispiel n, e, s, w der durchschnittliche Einheitsvektor 0,0 wäre und atan2 nan zurückgeben würde.

Wenn Sie eine C (ish) -Sprache verwenden, ist die Restfunktion der mathematischen Bibliothek nützlich, um Winkel zu normalisieren; Der Rest (a, Kreis) liegt zwischen -kreis/2 und Kreis/2.