0

我正在用 Python 做一个 GPS 项目,需要一些帮助。我不知道如何让标题部分工作。我希望声明是正确的,标题为355度数 +/- 有点错误。我的问题是绕过360学位。像

if ((heading – headerror) % 360) <= Gps.heading <= ((heading + headerror) % 360):

如果我使用355带有错误的标题20并且 gps 读取4,它们都是关于北方的。

335 <= 4 <= 15

我怎样才能让它检查它是否在一个范围内335to 15which would really be 335to 360, 0to 15

4

1 回答 1

1

一个简单的实现:

def between(head, low, high):
    """Whether the heading head is between headings low and high."""
    head, low, high = map(lambda x: x % 360, (head, low, high))
    if high >= low:
        return low <= head <= high
    return low <= head < 360 or 0 <= head <= high

首先它将所有参数转换为 and 之间的标题0360然后确定我们所处的情况,是否可以进行简单的比较,或者需要考虑0/ 360。在后一种情况下,它显式地检查low360与之间0和与high值之间。

正在使用:

>>> between(4, 355-20, 355+20)
True

您可以重构它以使用它,例如equal(4, 355, 20),如果您愿意。

于 2015-04-14T18:55:21.423 回答