GPS 航向 Python
GPS heading in Python
我在 Python 从事 GPS 项目,需要一些帮助。我不知道如何让标题部分工作。我希望声明是真实的,例如标题为355
度 +/- 有点误差。我的问题是 360
度左右。喜欢
if ((heading – headerror) % 360) <= Gps.heading <= ((heading + headerror) % 360):
如果我使用 355
的标题,错误为 20
并且 gps 读取 4
,它们都是关于北方的。
335 <= 4 <= 15
我怎样才能检查它是否在 335
到 15
的范围内,这实际上是 335
到 360
、0
到 15
?
一个简单的实现:
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
首先将所有参数转换为0
和360
之间的标题,然后判断我们处于哪种情况,是否可以进行简单比较,或者是否需要考虑0
/360
。在后一种情况下,它明确检查 low
值和 360
之间以及 0
和 high
值之间。
正在使用:
>>> between(4, 355-20, 355+20)
True
您可以重构它以使用它,例如equal(4, 355, 20)
如果你愿意的话。
我在 Python 从事 GPS 项目,需要一些帮助。我不知道如何让标题部分工作。我希望声明是真实的,例如标题为355
度 +/- 有点误差。我的问题是 360
度左右。喜欢
if ((heading – headerror) % 360) <= Gps.heading <= ((heading + headerror) % 360):
如果我使用 355
的标题,错误为 20
并且 gps 读取 4
,它们都是关于北方的。
335 <= 4 <= 15
我怎样才能检查它是否在 335
到 15
的范围内,这实际上是 335
到 360
、0
到 15
?
一个简单的实现:
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
首先将所有参数转换为0
和360
之间的标题,然后判断我们处于哪种情况,是否可以进行简单比较,或者是否需要考虑0
/360
。在后一种情况下,它明确检查 low
值和 360
之间以及 0
和 high
值之间。
正在使用:
>>> between(4, 355-20, 355+20)
True
您可以重构它以使用它,例如equal(4, 355, 20)
如果你愿意的话。