You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript如何根据两个归一化角度判断最短转向(解决跨0度问题)

实现方案

核心逻辑是先计算顺时针方向的角度差值,将差值归一化到0~360的区间后,和半圈的180度对比即可:

  • 差值小于180度:顺时针路径更短,返回true
  • 差值大于180度:逆时针路径更短,返回false
  • 差值等于180度:两个方向路径长度一致,可根据业务需求自定义返回值

具体JS实现如下:

function clockwise(a, b) {
    // 计算顺时针路径的角度差,+360避免负数,取模保证结果在0~360区间
    const clockwiseDiff = (b - a + 360) % 360;
    return clockwiseDiff < 180;
}

测试验证示例

你可以用以下场景验证正确性:

  • clockwise(350, 10) 返回true:350度顺时针转20度即可到10度,为最短路径
  • clockwise(10, 350) 返回false:10度逆时针转20度即可到350度,为最短路径
  • clockwise(90, 200) 返回true:顺时针转110度比逆时针转250度更短
  • clockwise(200, 90) 返回false:逆时针转110度比顺时针转250度更短

如果需要调整180度的返回逻辑,比如默认优先逆时针,只需要把判断条件改为clockwiseDiff <= 180即可。

内容的提问来源于stack exchange,提问作者Ood

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 00:57:03