我有两个罗盘方位(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/