Мне трудно моделировать погоду. Моделирование одного аспекта тривиально - некоторый синусоидальный паттерн + случайный шум. Однако больше чем 1 поражает воображение. У меня не может быть ветра, падающих листьев, дождя и снега, чтобы быть случайным. Простые столкновения, такие как дождь и снег, никогда не должны происходить.
Кроме того, я бы хотел уровень «интенсивности» для каждого. Но это может прийти после основной логики.
Погода хранится в MySQL.
Все ваши предложения приветствуются, но, пожалуйста, не предлагайте пинговать какой-либо почтовый индекс и указывать погоду оттуда.
Используя предложения, фактически, из всех приведенных ниже ответов, я пришел с этим не масштабным распределением:
Каждая функция будет вычисляться со случайным шумом, а комбинация из 3 создаст эффекты наложения.
(температура <0) и (влажность> 65) => снег
источник
Ответы:
Как насчет разделения погоды на более подробные части?
Вы все еще можете сохранить это в одном столбце SQL, если хотите, сделав его простым перечислением с 48 (4 * 4 * 3) возможными значениями (удаляя любые странные конфликты, которые вам не нравятся).
источник
Похоже, что Скрытая Марковская Модель может быть полезна для вас. Они определяют определенные состояния со статистическими вероятностями переходов из одного состояния в каждое из других состояний на основе относительной частоты в наблюдениях.
Вы можете определить некоторые погодные состояния, например, «дождливое» и «солнечное», а также вероятности перехода от дождливого к солнечному и от солнечного к дождливому, а также рассчитать, например, вероятность того, что скоро будет дождь, на основе ваших наблюдений, является ли в настоящее время солнечным или дождливым , Статья Википедии объясняет это , но это руководство (PDF) показывает более практический подход.
Если вы моделируете множество различных погодных моделей, было бы трудно смоделировать их независимо с этим шаблоном, но вы можете определить погоду, например, «FogRain» или «WindSnow», «SunWind», «Sun» и иметь вероятности для каждого. Эти вероятности могут быть даже изменены, например, в зависимости от игрового месяца. Однако следует помнить о небольшой проблеме, заключающейся в том, что размер вашей вероятностной матрицы будет увеличиваться на n ^ 2 по мере того, как вы добавляете больше типов погоды, поскольку каждый из них должен иметь вероятности перехода (даже если они равны нулю) для других.
источник
Короче говоря..
Я бы думал об этом через науку.
Как мы все знаем, снег - это дождь и наоборот, за исключением того, что они имеют различные твердые состояния из-за изменений температуры.
Изменения температуры могут быть связаны с ветрами.
Быстрый Google для "что вызывает ветер" дал мне ответ от Ответов:
Да, не лучший источник для научных вопросов, но это дает идею.
Итак, теоретически, вам нужен только ветер сейчас. Это может быть случайным, или, может быть, как-то написано в вашей среде, которая нагревается из-за некоторых событий.
Поднимите ветер прямо сейчас, примените к вашей текущей позиции и случайным образом или с помощью сценариев сделайте из него облака. Чем плотнее облако, тем больше вероятность и плотность дождя. Если температура достаточно низкая, дождь превращается в снег. Переместите облако вокруг и сделайте его "не таким плотным" с этим ветром.
Что касается дисплея, это ваше дело, просто кешируйте состояния падающих частиц,
if rain -> use water drop texture
иif snow -> use snowflake texture
. Используйте ветер, чтобы заставить эти частицы двигаться в соответствии с направлением ветра (да, вы должны хранить это тоже где-нибудь), чтобы сделать его немного более реалистичным.И с этим вы можете расширить на все. Например, если падает снег, а снежинки падают рядом с источником тепла, снова измените текстуру частиц на дождь.
На самом деле множество возможностей, это просто простая концепция.
PS Что касается града, посмотрите, что делает это, расширьте понятие для такой среды.
Веселись, удачи.
источник