Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 罗盘传感器从359变为1,如何计算此变化为;1“向上”;,而不是",;358向下“;?_Python_Math_Sensors_Integer Overflow - Fatal编程技术网

Python 罗盘传感器从359变为1,如何计算此变化为;1“向上”;,而不是",;358向下“;?

Python 罗盘传感器从359变为1,如何计算此变化为;1“向上”;,而不是",;358向下“;?,python,math,sensors,integer-overflow,Python,Math,Sensors,Integer Overflow,我有一个带有罗盘传感器的项目,每秒输出一次以度为单位的航向。值的更改将显示给用户 因此,当传感器从283度旋转到285度时,程序显示“2向上”,当传感器从163度旋转到152度时,程序显示“11向下” 我的问题是旋转超过359度。当compas从358度变为1度时,程序显示“357向下”,但我希望它显示“3向上”。我不知道如何做到这一点 另一方面也是一个问题,即从5到359,返回“354向上”,而不是“6向下” 这是我的密码: # Input from compas sensor: oldhdg

我有一个带有罗盘传感器的项目,每秒输出一次以度为单位的航向。值的更改将显示给用户

因此,当传感器从283度旋转到285度时,程序显示“2向上”,当传感器从163度旋转到152度时,程序显示“11向下”

我的问题是旋转超过359度。当compas从358度变为1度时,程序显示“357向下”,但我希望它显示“3向上”。我不知道如何做到这一点

另一方面也是一个问题,即从5到359,返回“354向上”,而不是“6向下”

这是我的密码:

# Input from compas sensor:
oldhdg = 358
newhdg = 1

# Calculating and displaying the value change:
if oldhdg == newhdg:
    change = 0
    flowdir = 'stay'
elif oldhdg > newhdg:
    change = oldhdg-newhdg
    flowdir = 'down'
elif newhdg > oldhdg:
    change = newhdg-oldhdg
    flowdir = 'up'
print(f'{change} {flowdir}')
输出:

357 down
>>>

从整体上考虑。所有三角洲都有两个值:“向上”和“向下”。您希望在所有情况下都返回这两个值中的较小值。编写一个这样做的函数

标题中的def更改(旧、新): “”“返回两个数据点之间的标题更改 >>>更改标题(100、99)中的内容: -1 >>>更改标题(99100): 1. >>>更改标题(358,2): 4. >>>更改标题(2358): -4 """ delta=新的旧的 最小#U变化=(增量+180)%360-180#夹紧至[-180,180) 返回最小的零钱 然后,您可以格式化以使现有值与另一个函数相匹配:

def显示标题更改(更改):
返回f“{abs(change)}{'up'如果change>=0,则返回'down'}”

整体考虑。所有增量都有两个值:“向上”和“向下”。您希望在所有情况下都返回这两个值中的较小值。编写一个函数来实现这一点

标题中的def更改(旧、新): “”“返回两个数据点之间的标题更改 >>>更改标题(100、99)中的内容: -1 >>>更改标题(99100): 1. >>>更改标题(358,2): 4. >>>更改标题(2358): -4 """ delta=新的旧的 最小#U变化=(增量+180)%360-180#夹紧至[-180,180) 返回最小的零钱 然后,您可以格式化以使现有值与另一个函数相匹配:

def显示标题更改(更改):
返回f“{abs(change)}{'up'如果change>=0,则返回'down'}”

您打算如何区分从358到2通过0的(慢速)转向和从358到2通过180的(快速)转向?@HighPerformanceMark足够慢的时间可能无关紧要。您打算如何区分从358到2通过0的(慢速)转向和(快速)转向通过180?高性能标记从358转为2,时间足够慢,这可能无关紧要