Как перевести скорость ветра между шкалой Бофорта и M / S и наоборот в Javascript? - PullRequest
0 голосов
/ 31 января 2020

Я пытаюсь создать функцию для преобразования метров в секунду (м / с) в Шкала Бофорта в Javascript. Я могу сделать это, используя серию операторов if, но я бы предпочел заменить это формулой, чтобы динамически вычислить это для меня.

Это то, что мое исследование позволило мне достичь:

function beaufort(ms) {
    ms = Math.abs(ms);
    if (ms <= 0.2) {
        return 0;
    }
    if (ms <= 1.5) {
        return 1;
    }
    if (ms <= 3.3) {
        return 2;
    }
    if (ms <= 5.4) {
        return 3;
    }
    if (ms <= 7.9) {
        return 4;
    }
    if (ms <= 10.7) {
        return 5;
    }
    if (ms <= 13.8) {
        return 6;
    }
    if (ms <= 17.1) {
        return 7;
    }
    if (ms <= 20.7) {
        return 8;
    }
    if (ms <= 24.4) {
        return 9;
    }
    if (ms <= 28.4) {
        return 10;
    }
    if (ms <= 32.6) {
        return 11;
    }
    return 12;
}

Я хотел бы заменить это функцией, которая автоматически вычисляет с использованием правильной формулы. Кто-нибудь знает, как этого можно достичь без нескольких операторов if или переключателя?

1 Ответ

0 голосов
/ 31 января 2020

Хорошо, так что после прочтения нескольких статей, похоже, есть формула для расчета Бофорта в м / с и обратно. Я отвечу на свой пост с парой функций, которые я сделал.

Рассчитать м / с по Бофорту:

function msToBeaufort(ms) {
    return Math.ceil(Math.cbrt(Math.pow(ms/0.836, 2)));
}

msToBeaufort(24.5);
output: 10

Рассчитать Бофорт по м / с:

function beaufortToMs(bf){
    return Math.round(0.836 * Math.sqrt(Math.pow(bf, 3)) * 100)/ 100;
}

beaufortToMs(3)
output: 4.34

Я знаю, это редкий топи c, но, надеюсь, это кому-нибудь поможет.

...