javascript - 比较两个罗盘轴承

标签 javascript jquery

我有两个罗盘方位(0-360 度):

var routeDirection = 28
var windDirection = 289

我需要比较这些轴承以确定骑手是否会得到

a) 侧风

b) 顺风

c) 逆风

我尝试将方位转换为罗盘方向,例如:

  var compass = ['N', 'NNE', 'NE', 'ENE', 'E', 'ESE', 'SE', 'SSE', 'S', 'SSW', 'SW', 'WSW', 'W', 'WNW', 'NW', 'NNW', 'N'];
  var windDirection = compass[Math.round(bearing / 22.5)];

然后进行基本的字符串比较:

if (routeDirection=='N') && (windDirection=='S') {
 output = 'Headwind'
}

但显然这是冗长且低效的......

最佳答案

假设你直接向上,你会得到这个:

\ Head wind /
 \         /
  \       /
   \  |  /
    \ | /
Cross\|/Winds
     / \
    /   \
   /     \
  /       \
 /         \
/ Tail wind \

所以基本上......首先你旋转你的视角,以便你在方位 Angular 0 处行驶:

var adjustedWindDirection = windDirection - routeDirection;

当然,方位 Angular 应该在0-360范围内,所以再次调整:

adjustedWindDirection = (adjustedWindDirection+360)%360;

现在我们需要弄清楚方向在哪个象限:

var quadrant = Math.round((adjustedWindDirection-45)/90);

最后:

var winds = ["head","cross (left)","tail","cross (right)"];
var resultingWind = winds[quadrant];

完成!

关于javascript - 比较两个罗盘轴承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22093244/

相关文章:

javascript - Dropzone.js 事件未触发

jquery - 如何使用 jQuery 找到 parent 列表

javascript - 如何知道 JavaScript 或 jquery 中是否定义了对象?

jquery 在 .removeClass().addClass() 之后无法识别新类?

javascript - 事件删除后全日历不刷新

javascript - JavaScript 中的 Telegram Web Bots 数据验证

javascript - 每次 GET 调用后,URL 都有 ?_=*Number* 吗?

javascript - 如何使用 CSS 和 jQuery 根据表格单元格值有条件地在悬停时突出显示表格行?

javascript - jQuery 用幻灯片隐藏元素

jquery - 替换复杂标题中的样式表