2016-05-06 2 views
0
  1. имеют распределение дискретного числа N угловых значений в интервале [0: 360]
  2. Карта эти значения N на единичной окружности.
  3. Автоматически определять два значения, между которыми находятся все остальные значения.

Есть ли общее решение?Дискретное равномерное круговое распределение

enter image description here

ответ

0

Одним из способов было бы вычислить средний угол, вычесть из всех углов, получая результат между -circle/2 и круг/2 (где, например, круг 2р, если вы используете радиан) и принять диапазон (средний угол + мин этих, средний угол + макс).

Это может потерпеть неудачу, по крайней мере, двумя способами: вы можете не найти средний угол (что означает север, восток, юг, запад?), А min и max могут быть -circle/2 и circle/2 соответственно, поэтому ваш диапазон будет целым кругом.

Я думаю, что «правильный» способ вычисления среднего угла состоит в том, чтобы превратить все углы в единичные векторы, взять среднее из них и использовать atan2 для поиска ориентации среднего вектора; это средний угол. Но обратите внимание, что в n, e, s, например, средний единичный вектор будет равен 0,0, а atan2 будет возвращать nan.

Если вы используете язык C (ish), остальная функция функции математической библиотеки удобна для нормализации углов; остаток (a, круг) будет находиться между -circle/2 и circle/2.