气象学中风向是以八分法(八个主要方向)或者十六分法(十六个细分方向)来描述的。js算法如下:
八风位
- 在八风位中,只有主要的八个方向:北(N)、东北(NE)、东(E)、东南(SE)、南(S)、西南(SW)、西(W)、西北(NW)
export const getDirection = (direction ) => {
let reg = Number(direction.value);
// 定义新的方向数组
const arr = ["N", "NE", "E", "SE", "S", "SW", "W", "NW"];
const step = 45; // 每个八风位之间的角度
if (reg < 0) {
reg += 360;
}
let result = "";
const base = 22.5; // 基准角度调整到每个扇区的中点
for (let i = 0; i < arr.length; i++) {
const n = i * step + base;
if (reg < n || reg === n) {
result = arr[i];
break;
}
}
return result;
};
十六分位
- 在十六风位中,有更加细分的十六个方向:北(N)、北北东(NNE)、东北(NE)、东东北(ENE)、东(E)、东东南(ESE)、东南(SE)、南东南(SSE)、南(S)、南南西(SSW)、西南(SW)、西西南(WSW)、西(W)、西西北(WNW)、西北(NW)、北西北(NNW)。
export const getDirection = (direction ) => {
let reg = Number(direction.value);
const arr = ["N", "NNE", "NE", "ENE", "E", "ESE", "SE", "SSE", "S", "SSW", "SW", "WSW", "W", "WNW", "NW", "NNW"];
const step = 22.5;
if (reg < 0) {
reg += 360;
}
let result = "";
const base = 11.25;
for (let i = 0; i < arr.length; i++) {
const n = i * step + base;
if (reg < n || reg === n) {
result = arr[i];
break;
}
}
return result;
};