Me está costando modelar el clima. Modelar un solo aspecto es trivial: algunos patrones sinusoidales + ruido aleatorio. Sin embargo, más de 1 me está volviendo loco. No puedo tener viento, hojas caídas, lluvia y nieve, todo para ser aleatorio. Las colisiones simples como la lluvia y la nieve nunca deberían suceder.
Además de esto, me gustaría un nivel de "intensidad" para quizás cada uno. Pero esto puede venir después de la lógica principal.
El tiempo se almacena en MySQL.
Todas sus sugerencias son bienvenidas, pero no sugiera hacer ping a algún código postal y extraer el clima desde allí.
Utilizando sugerencias de, en realidad, todas las respuestas a continuación, he creado esta distribución no a escala :
Cada característica se calculará con un ruido aleatorio, y la combinación de las 3 producirá efectos de superposición.
(temp <0) y (húmedo> 65) => nieve
fuente
Respuestas:
¿Qué hay de dividir el clima en partes más detalladas?
Todavía puede almacenar esto en una sola columna SQL si lo desea, convirtiéndolo en una enumeración simple con 48 (4 * 4 * 3) valores posibles (eliminando cualquier conflicto extraño que no le guste).
fuente
Parece que un modelo oculto de Markov podría serle útil. Estos definen ciertos estados con probabilidades estadísticas de transiciones de un estado a cada uno de los otros estados en función de la frecuencia relativa en las observaciones.
Puede definir algunos estados climáticos, por ejemplo, 'lluvioso' y 'soleado' y las probabilidades de transiciones de lluvioso a soleado y soleado a lluvioso y calcular, por ejemplo, la probabilidad de que pronto esté lloviendo en función de su observación de si actualmente está soleado o lluvioso . El artículo de Wikipedia explica esto, pero este tutorial (PDF) muestra un enfoque más práctico.
Si está modelando muchos patrones climáticos diferentes, sería difícil modelarlos independientemente con este patrón, pero puede definir el clima como 'FogRain' o 'WindSnow' 'SunWind' 'Sun' por ejemplo y tener probabilidades para cada uno. Estas probabilidades incluso podrían modificarse según el mes del juego, por ejemplo. Sin embargo, hay un pequeño problema a tener en cuenta que el tamaño de su matriz de probabilidad aumentará en n ^ 2 a medida que agregue más tipos de clima, ya que cada uno necesita tener probabilidades de transición (incluso si son cero) a los demás.
fuente
En breve..
Estaría pensando esto a través de la ciencia.
Como todos sabemos, la nieve es lluvia y viceversa, excepto que tienen diferentes estados sólidos debido a los cambios de temperatura.
Los cambios de temperatura pueden estar asociados a los vientos.
Un rápido Google para "lo que causa el viento" me dio una respuesta de Answers.com:
Sí, no es la mejor fuente de preguntas científicas, pero da la idea.
Entonces, teóricamente, solo necesitas viento ahora. Puede ser aleatorio, o bien, de alguna manera podría estar programado para su entorno que se calienta debido a algunos eventos.
Tome el viento ahora, aplique a su posición actual, y al azar o mediante una secuencia de comandos, haga nubes fuera de él. Cuanto más densa es la nube, mayor es la probabilidad y densidad de lluvia. Si la temperatura es lo suficientemente baja, la lluvia se convierte en nieve. Mueva la nube y hágala "no tan densa" con ese viento.
En cuanto a la pantalla, eso depende de usted, solo guarde en caché los estados de las partículas que caen,
if rain -> use water drop texture
yif snow -> use snowflake texture
. Usa el viento para hacer que estas partículas se muevan de acuerdo con la dirección del viento (sí, también debes almacenar esta, en algún lugar) para que sea un poco más realista.Y con esto puedes expandirte sobre todo. Por ejemplo, si cae nieve y los copos de nieve caen cerca de algún tipo de fuente de calor, cambie la textura de las partículas para que llueva nuevamente.
Muchas posibilidades en realidad, este es solo un concepto simple.
PD: En cuanto al granizo, mira lo que los hace, expande el concepto para dicho entorno.
Que te diviertas, buena suerte.
fuente