Estou tendo dificuldades para modelar o clima. Modelar um único aspecto é trivial - algum padrão sinusoidal + ruído aleatório. No entanto, mais de 1 está me deixando louco. Não posso ter vento, folhas caindo, chuva e neve, tudo para ser aleatório. Colisões simples como chuva e neve nunca devem acontecer.
Além disso, eu gostaria de um nível de "intensidade" para talvez cada um. Mas isso pode vir após a lógica principal.
O tempo é armazenado no MySQL.
Todas as suas sugestões são bem-vindas, mas não sugerimos pingar um código postal e retirar o tempo a partir daí.
Utilizando sugestões de, na verdade, todas as respostas abaixo, criei esta distribuição não em escala :
Cada recurso será calculado com um ruído aleatório e a combinação dos 3 produzirá efeitos de sobreposição.
(temperatura <0) e (úmido> 65) => neve
fonte
Respostas:
Que tal dividir o clima em partes mais detalhadas?
Você ainda pode armazená-lo em uma única coluna SQL, se desejar, tornando-o um enum simples com 48 (4 * 4 * 3) valores possíveis (removendo quaisquer conflitos estranhos que você não goste).
fonte
Parece que um modelo Markov oculto pode ser útil para você. Eles definem certos estados com probabilidades estatísticas de transições de um estado para cada um dos outros estados com base na frequência relativa das observações.
Você pode definir alguns estados climáticos, por exemplo, 'chuvoso' e 'ensolarado' e probabilidades de transições de chuvoso para ensolarado e ensolarado para chuvoso e calcular, por exemplo, a probabilidade de que em breve chova com base em sua observação de se está ensolarado ou chuvoso no momento . O artigo da Wikipedia explica isso, mas este tutorial (PDF) mostra uma abordagem mais prática.
Se você estiver modelando muitos padrões climáticos diferentes, seria difícil modelá-los independentemente com esse padrão, mas você pode definir o clima como 'FogRain' ou 'WindSnow' 'SunWind' 'Sun' por exemplo e ter probabilidades para cada um. Essas probabilidades podem até ser modificadas com base no mês do jogo, por exemplo. Há um pequeno problema a ser observado, no entanto, de que o tamanho da sua matriz de probabilidade aumentará em n ^ 2 à medida que você adiciona mais tipos climáticos, pois cada um precisa ter probabilidades de transição (mesmo que sejam zero) para os outros.
fonte
Em resumo..
Eu estaria pensando isso através da ciência.
Como todos sabemos, a neve é chuva e vice-versa, exceto que eles têm estados sólidos diferentes devido a mudanças de temperatura.
As mudanças de temperatura podem ser associadas aos ventos.
Um rápido Google para "o que causa o vento" me deu uma resposta do Answers.com:
Sim, não é a melhor fonte para questões científicas, mas dá a ideia.
Então, teoricamente, você só precisa de vento agora. Pode ser aleatório ou, de alguma forma, pode ser de alguma forma programado para o seu ambiente, que é aquecido devido a alguns eventos.
Aprecie o vento agora, aplique na sua posição atual e, aleatoriamente ou através de um script, faça nuvens dela. Quanto mais densa a nuvem, maior a probabilidade e a densidade da chuva. Se a temperatura estiver baixa o suficiente, a chuva se tornará neve. Mova a nuvem e torne-a "não tão densa" com esse vento.
Quanto à tela, depende de você, apenas armazene em cache os estados das partículas que caem
if rain -> use water drop texture
eif snow -> use snowflake texture
. Use o vento para fazer essas partículas se moverem de acordo com a direção do vento (sim, você deve armazenar esta também em algum lugar) para torná-la um pouco mais realista.E com isso você pode expandir tudo. Por exemplo, se houver neve caindo e os flocos de neve caírem perto de algum tipo de fonte de calor, altere a textura das partículas para chover novamente.
Muitas possibilidades, na verdade, este é apenas um conceito simples.
PS Quanto ao granizo, veja o que os torna, expanda o conceito para esse ambiente.
Divirta-se, boa sorte.
fonte