答案1
欢迎!
让我们一步一步地研究解决方案。
首先,请记住,除了您提到的“右”和“左”之外,还可能出现另外两个选项:如果罗盘方位的新旧值相同,则“继续前进”;如果它们之间的差值恰好是 180 度,则“后退”。
现在让我们旋转罗盘卡,使旧方位角与 0 对齐,方向为正北。新方位角也将旋转该角度。如果新方位角在右侧,则没有问题,但如果它位于零的左侧怎么办?这个负值会搞乱所有计算。让我们将此值改为正确的值,范围从 0 到 359 度。这并不难 - 加 360(或 720,或 1080),然后取除以 360 的余数。因此,-15 将变成正确的 345 度。
现在让我们从这个值中减去圆的一半,即 180 度,并查看结果的符号:如果是负值,则应向右转,如果是正值,则向左转,如果是零,则向后转。符号会让我们知道 SIGN() 函数 - 它返回 -1、0 或 1。要在 CHOOSE() 函数中使用此值,您需要将这些值更改为 1、2 和 3。因此,只需添加 2。因此,您的任务可以使用如下公式解决
=IF(A1=B1;"Steady! (forward)";CHOOSE(SIGN(MOD(B1-A1+720;360)-180)+2;"Starboard! (right)";"Full reverse! (back)";"Port! (left)"))