2010-10-24 4 views
4

J'ai expérimenté avec ceci et je n'ai pas été capable de trouver une solution adéquate. En espérant que l'un de vous, Mathletes, puisse me diriger dans la bonne direction. Je construis un Snow Globe en ActionScript 3 et je dois trouver un ensemble d'équations pour contrôler deux niveaux de flocons de neige - un niveau aléatoire, et l'autre interactif où un utilisateur peut cliquer dessus. Pour la neige aléatoire, je dois lui faire créer un certain nombre de positions aléatoires x/y au fond du globe, qui est un cercle avec un rayon d'environ 300. Ensuite, quand l'action de secousse se produit, ils doivent flotter aléatoirement en haut, puis retombez dans une position aléatoire au bas du cercle. Pour la neige interactive, j'en ai besoin pour la disposition aléatoire, mais je ne veux pas que les flocons se chevauchent pour qu'il soit plus facile d'interagir avec eux.Equations mathématiques pour la neige aléatoire dans un globe de neige

+0

+1 pour l'intérêt. –

Répondre

0

Voici une solution, pas particulièrement celle du cleaver.

Selon la forme de votre flocon, vous pouvez calculer à quel point un flocon peut se rapprocher d'un autre flocon sans se chevaucher (peut nécessiter une rotation particulière). Laissons cette distance entre les centres d. Construire un tableau 2d pour votre affichage à une résolution de sorte qu'il contienne votre cercle complètement.

Le tableau peut avoir zéro ou 1 valeur. 0 signifie que vous pouvez placer un nouveau flocon de neige là un moyen que vous ne pouvez pas. Marquez tout en dehors du cercle comme 1. Maintenant, choisissez un centre aléatoire pour le flocon. Lorsque vous le placez là, marquez tous les points dans le rayon d autour de celui-ci avec 1. Générez un autre point aléatoire. Si c'est 1, continuez à générer un autre point aléatoire jusqu'à ce que vous trouviez un 0. Une fois que vous l'avez trouvé, placez le nouveau flocon de neige là et marquez tout ce qui l'entoure avec le rayon d. Parfois, lorsque les flocons sont trop proches, vous devrez les faire pivoter de manière appropriée afin qu'ils ne se chevauchent pas.

Une fois que vous atteignez la fin, cela peut prendre de plus en plus de temps à trouver un point vide. À ce stade, vous pouvez analyser la matrice, faire une liste de points vides et ensuite sélectionner des points aléatoires à partir de là.

Questions connexes