gpt4 book ai didi

python - 如何优雅地找到一个角度是否在一个范围之间?

转载 作者:行者123 更新时间:2023-12-04 15:02:06 29 4
gpt4 key购买 nike

例如,如果我的角度是 20 度,我可以检查它是否在 [0, 40] 之内,如下所示:

lower = 0
upper = 40
if angle > lower and angle < upper:
print('done')
但是,如果我的范围跨越 360 度边界(例如下 = 350 和上 = 40),则此逻辑将不起作用。我知道我可以用额外的 if/else 块来处理这个问题,但有什么优雅的方法吗?

最佳答案

检查是否 alpha 的简单方法介于 lower 之间和 upper是从 lower 测量角度模 360 .这为我们提供了 0 到 360 之间的正值。
我们只需要检查(alpha - 下)模 360 是否小于(上 - 下)模 360,如您在插图中所见:
范围内的阿尔法:
alpha in the range
alpha 超出范围:
enter image description here

def angle_in_range(alpha, lower, upper):
return (alpha - lower) % 360 <= (upper - lower) % 360


tests = [(25, 20, 40), (15, 20, 40), (45, 20, 40), (10, 350, 20), (-5, 350, 20), (365, 350, 20), (330, 350, 20)]
for alpha, lower, upper in tests:
print(f'{alpha} between {lower} and {upper}: {angle_in_range(alpha, lower, upper)}')

# 25 between 20 and 40: True
# 15 between 20 and 40: False
# 45 between 20 and 40: False
# 10 between 350 and 20: True
# -5 between 350 and 20: True
# 365 between 350 and 20: True
# 330 between 350 and 20: False

关于python - 如何优雅地找到一个角度是否在一个范围之间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66799475/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com