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

如何简洁判断角度是否接近正立状态(0/90/180/270°)?

更简洁的角度筛选方案

你的判断逻辑可以通过角度取模90°的技巧大幅简化,核心思路是:所有正立状态的角度都是90°的整数倍,只需判断角度与最近的90°倍数的偏差是否在允许范围内即可。

优化后的代码实现

// 先将角度归一化到0-360°范围(处理负数或超过360°的异常情况)
angle = angle % 360;
if (angle < 0) angle += 360;

// 计算角度与最近90°倍数的偏差值
double remainder = angle % 90;
bool isUpright = remainder <= maxTilt || remainder >= 90 - maxTilt;
var tooTilted = !isUpright;

原理说明

  1. 角度归一化:确保角度落在0-360°区间,避免负数、超大值干扰后续判断。
  2. 取模90°:把任意角度转化为0-90°范围内的余数,这个余数直接代表当前角度与最近的90°倍数的偏差(比如185°模90得5°,说明离180°偏差5°;85°模90得85°,说明离90°偏差5°)。
  3. 偏差判断:如果余数≤maxTilt,说明角度接近某个90°倍数;如果余数≥90-maxTilt,说明角度接近下一个90°倍数。只要满足任一条件,就属于正立状态。

这种写法不仅代码更简洁,逻辑也更直观,避免了重复的区间判断,性能和原代码一致甚至更优。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 13:35:48