离散均匀圆形分布
Discrete uniform circular distribution
- 在区间 [0:360]
中分布 angular 个值的离散数 N
- 将这N个值映射到一个单位圆周上。
- 自动确定所有其他值介于两者之间的两个值。
是否有通用的解决方案?
一种方法是计算平均角度,从所有角度中减去它,得到介于 -circle/2 和 circle/2 之间的结果(例如,如果您使用弧度,则圆为 2pi)并将范围设为(平均角+这些的最小值,平均角+最大值)。
这至少会以两种方式失败:您可能找不到平均角度(北、东、南、西的平均值是多少?),最小值和最大值可能是 -circle/2 和circle/2 分别,所以你的范围是整个圆圈。
我认为'proper'计算平均角度的方法是将所有角度都变成单位向量,取这些的平均值并使用atan2找到平均向量的方向;这是平均角度。但请注意,在 n,e,s,w 示例中,平均单位向量将为 0,0,而 atan2 将为 return nan.
如果您使用的是 C(ish)语言,则数学库函数 remainder 可以方便地对角度进行归一化; remainder( a, circle) 将在 -circle/2 和 circle/2.
之间
- 在区间 [0:360] 中分布 angular 个值的离散数 N
- 将这N个值映射到一个单位圆周上。
- 自动确定所有其他值介于两者之间的两个值。
是否有通用的解决方案?
一种方法是计算平均角度,从所有角度中减去它,得到介于 -circle/2 和 circle/2 之间的结果(例如,如果您使用弧度,则圆为 2pi)并将范围设为(平均角+这些的最小值,平均角+最大值)。
这至少会以两种方式失败:您可能找不到平均角度(北、东、南、西的平均值是多少?),最小值和最大值可能是 -circle/2 和circle/2 分别,所以你的范围是整个圆圈。
我认为'proper'计算平均角度的方法是将所有角度都变成单位向量,取这些的平均值并使用atan2找到平均向量的方向;这是平均角度。但请注意,在 n,e,s,w 示例中,平均单位向量将为 0,0,而 atan2 将为 return nan.
如果您使用的是 C(ish)语言,则数学库函数 remainder 可以方便地对角度进行归一化; remainder( a, circle) 将在 -circle/2 和 circle/2.
之间