相关疑难解决方法(0)

计算多个纬度/经度坐标对的中心点

给定一组纬度和经度点,如何计算该集合中心点的纬度和经度(也就是将所有点的视图居中的点)?

编辑:我用过的Python解决方案:

Convert lat/lon (must be in radians) to Cartesian coordinates for each location.
X = cos(lat) * cos(lon)
Y = cos(lat) * sin(lon)
Z = sin(lat)

Compute average x, y and z coordinates.
x = (x1 + x2 + ... + xn) / n
y = (y1 + y2 + ... + yn) / n
z = (z1 + z2 + ... + zn) / n

Convert average x, y, z coordinate to latitude and longitude.
Lon = atan2(y, …
Run Code Online (Sandbox Code Playgroud)

math geo latitude-longitude

134
推荐指数
8
解决办法
10万
查看次数

使计算机实现360度= 0度,旋转炮塔

我正在制作一个游戏,它是一个计算机控制的炮塔.炮塔可以旋转360度.

它使用trig来找出瞄准枪所需的角度(objdeg)并且枪的当前角度存储在(gundeg)中

以下代码以设定的速度旋转喷枪

if (objdeg > gundeg)
{
    gundeg++;
}
if (objdeg < gundeg)
{
    gundeg--;
}
Run Code Online (Sandbox Code Playgroud)

问题是如果有一个10度的物体,枪会旋转,射击并摧毁它,如果另一个目标出现在320度,则枪将逆时针旋转310度,而不是顺时针旋转60度以击中它.

如何修复我的代码,使其不会愚蠢?

algorithm

19
推荐指数
6
解决办法
9001
查看次数

平均角度...再次

我想计算一组角度的平均值,它代表源轴承(0到360度) - (类似于风向)

我知道之前已经讨论过(好几次).接受的答案是从角度计算单位向量并取其平均值的角度.

然而,这个答案以非直观的方式定义了平均值.平均0,0和90将是atan((sin(0)+ sin(0)+ sin(90))/(cos(0)+ cos(0)+ cos(90)))= atan(1/2)= 26.56度

我希望0,0和90的平均值为30度.

所以我认为再问这个问题是公平的:你如何计算平均值,所以这些例子将给出直观的预期答案.

编辑2014:

在提出这个问题后,我发布了一篇关于CodeProject的文章,该文章提供了全面的分析.本文探讨了以下参考问题:

  • 给出2000年美国每次出生的时间[00:00-24:00] - 计算平均出生时间
  • 给定从固定发射器到固定接收器的多方向测量,使用具有包裹的正态分布误差的测量技术 - 估计方向.
  • 给定由两个点之间的多方位角估计,由"普通"人类(假设受到包裹的截断的正态分布误差) - 估计方向.

algorithm math geometry

18
推荐指数
2
解决办法
7403
查看次数

平均两个角度环绕

可能重复:
如何计算一组角度的平均值?

我有两个角度,a = 20度,b = 350度.这两个角度的平均值是185度.但是,如果我们认为最大角度是360度并且允许环绕,则可以看到5度是更接近的平均值.

在计算平均值时,我遇到了一个很好的公式来解决这个问题.有人有任何提示吗?

还是我在这里拍脚?这被认为是数学中的"坏习惯"吗?

math average angle

11
推荐指数
1
解决办法
1万
查看次数

求一组循环数据的中位数

我想编写一个 C++ 函数来查找循环数据数组的中位数。例如,考虑指南针的读数,其中读数假定在 [0,360) 内。虽然 1 和 359 看起来很远,但由于读数的循环性质,它们非常接近。

求普通数据中 N 个元素的中位数如下。1. 对 N 个元素的数据进行排序(升序或降序) 2. 如果 N 为奇数,则中位数为排序数组中的第 (N+1)/2 个元素。3.如果N是偶数,中位数是排序数组中第N/2和第N/2+1个元素的平均值。

然而,循环数据中的环绕问题将问题带到了不同的维度,并且解决方案并不简单。

这里解释了从循环数据中查找平均值的类似问题如何计算一组循环数据的平均值? 上面链接中的建议是找到每个角度对应的单位向量并求平均值。然而,中位数需要对数据进行排序,而向量排序在这种情况下没有任何意义。因此,我认为我们不能使用提议的方案来找到中位数!

c++ algorithm median

7
推荐指数
2
解决办法
3285
查看次数

如何找到一组轴承的平均值

可能重复:
如何计算一组角度的平均值?

如果我有一套1-360的轴承,我怎样才能找到平均值?通常要找到平均值,将它们全部加起来并除以项目数.这里的问题是,在[1,359],2个轴承的情况下这样做会导致180,实际上应该是360.任何想法?

math average geospatial bearing

6
推荐指数
1
解决办法
3364
查看次数

如何计算色调值从0到360的平均值和标准偏差?

假设使用简单的HSV模型获取5个色调样本,其值为355,5,5,5,5,就感知而言,所有色调均为红色并且彼此"相邻".但简单的平均值是75,远离0或360,接近黄绿色.

有什么更好的方法来计算这个均值和相关的标准?

statistics colors hue

6
推荐指数
1
解决办法
3636
查看次数

您如何计算一组角度的中位数?

我有一个角度列表,想摆脱异常值。我的第一个想法是计算中位数。不幸的是存在“环绕”问题。我不知道定义一组角度(或时钟位置)的中值的“正确”方法。

我的想法是先计算平均值,然后用它打破另一侧的圆。

Example:
{6, 50, 52, 54, 60, 250} (in degree, 0-360)
average ~ 39
new range [-219, 219) -> new order 250, 6, 50, 52, 54, 60, 250
52 or 54 as median
Run Code Online (Sandbox Code Playgroud)

这是一个好方法,还是我不知道有更好的方法?

有点相关:这个问题展示了计算角度均值的方法。

algorithm math geometry median

5
推荐指数
1
解决办法
1963
查看次数

角度的加权平均值

我想计算一组角度的加权平均值。

这个问题中,有一个如何计算平均值的答案,如本页所示。

现在我想弄清楚如何计算加权平均值。也就是说,对于每个角度都有一个权重(权重之和为 1)

0.25、0度 0.5、20度 0.25、90度

加权平均应该(如果我没有弄错的话)是 32 度。

python algorithm mean

4
推荐指数
1
解决办法
4407
查看次数

如何计算R中的风向平均值?

我有一个由风向矢量组成的数据集,如下所示:

wdir <- c(296.9, 215.2, 204.8, 110.8, 287.6, 203.4, 253.1, 46.0, 298.8,  62.8, 183.4, 62.3,
          44.3, 97.6, 78.6, 125.6, 116.9, 121.0, 111.2, 335.8, 287.4, 51.7, 232.6, 265.5,
          269.7, 20.5, 17.0, 310.8)
Run Code Online (Sandbox Code Playgroud)

标量值以度为单位.

如何计算平均风向?

r

4
推荐指数
1
解决办法
2425
查看次数

如何找到包含一组模N的最小区间?

首先是导致我遇到问题的实际应用:

给定一组v[i]在[0,360]度范围内的角度测量值,包含全部的最小间隔是多少v[i]?

注意:间隔可能在两侧,大约在0附近.

问题的抽象描述:

对于一个给定值的v[i],有什么价值cd,使得

  • 为了所有人i:dist(v[i],c) <= d
  • d 尽可能小
  • dist(x,y) = abs(((x-y + N/2 + N) mod N) - N/2)

这在开放(无限)规模上是微不足道的,其中dist(x,y) = abs(x-y):

calculate max and min of all v[i]
c = (max + min)/2;
d = (max - min)/2;
Run Code Online (Sandbox Code Playgroud)

但是,对于有限尺度(模N)和上面给出的距离定义,找到c和d的最佳方法是什么?

有没有办法做到这一点O(n)(如果n是值的数量)?

language-agnostic algorithm

3
推荐指数
1
解决办法
1820
查看次数