Математические уравнения для случайного снега в снежном шаре - PullRequest
4 голосов
/ 24 октября 2010

Я экспериментировал с этим и не смог найти адекватного решения.Надеюсь, что один из вас, матлецы, может указать мне правильное направление.Я создаю Snow Globe в ActionScript 3, и мне нужно придумать набор уравнений для управления двумя уровнями снежинок - один уровень случайный, а другой интерактивный, где пользователь может щелкнуть по ним.Для случайного снега мне нужно, чтобы он создал определенное количество случайных x / y позиций в нижней части земного шара, который представляет собой круг с радиусом около 300. Затем, когда происходит сотрясение, они должны случайным образом плавать в направлениисверху, затем снова возвращайтесь в случайное положение внизу круга.

Для интерактивного снега мне нужно, чтобы он располагался случайным образом, но я не хочу, чтобы хлопья перекрывались, чтобы было легче взаимодействоватьс ними.

1 Ответ

0 голосов
/ 25 октября 2010

Вот решение, хотя и не особо умное.

На основании формы вашей пластинки вы можете вычислить, насколько близко пластинка может добраться до другой пластинки без наложения (может потребоваться определенное вращение). Пусть это расстояние между центрами будет d. Создайте 2d массив для вашего дисплея с некоторым разрешением, чтобы он полностью содержал ваш круг.

Массив может иметь ноль или 1 значение. 0 означает, что вы можете поместить новую снежинку там, что вы не можете. Пометьте все за пределами круга как 1. Теперь выберите случайный центр для хлопьев. Когда вы поместите его туда, отметьте все точки в радиусе d вокруг него с помощью 1. Создайте еще одну случайную точку. Если это 1, продолжайте генерировать другую случайную точку, пока не найдете 0. Как только вы ее найдете, поместите туда новую снежинку и отметьте все вокруг нее радиусом d. Иногда, когда хлопья находятся слишком близко, вам придется поворачивать их соответствующим образом, чтобы они не перекрывались.

Как только вы дойдете до конца, поиск пустого места может занять все больше и больше времени. В этот момент вы можете просканировать массив, составить список пустых точек, а затем просто выбрать случайные точки оттуда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...