Уравнения экранной заставки Starfield

#c# #math #vector #xna

#c# #математика #вектор #xna

Вопрос:

Для тех из вас, кто точно не помнит, как выглядела старая заставка Windows Starfield screensaver, вот видео на YouTube: http://www.youtube.com/watch?v=r5AoFiVs2ME

Прямо сейчас я могу генерировать случайные частицы («звезды») внутри в определенном радиусе. С чем у меня возникли проблемы, так это с поиском наилучшего способа достижения результатов, показанных в приведенном выше видео.

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

Спасибо!

Ответ №1:

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

Комментарии:

1. Этот ответ вместе с ответом непосредственно под ним от eykanal были именно тем, что я искал. Оказывается, я делал это намного, намного сложнее.

Ответ №2:

Базовый алгоритм, с которым вы можете работать:

  1. Генерируйте звезды в случайном месте с трехмерным распределением по гауссу (наиболее вероятно в середине экрана, менее вероятно по мере удаления от экрана). Обратите внимание, что вектор движения звезды определяется этой начальной точкой… движение будет эффективно перемещаться вдоль линии, образованной исходной точкой и исходным местоположением, наружу.

  2. Присвойте каждой вновь созданной звезде расстояние. Обратите внимание, что расстояние не зависит от места старта.

  3. Перемещайте звезду по прямой с экспоненциально возрастающей скоростью, одновременно уменьшая расстояние до нее. Вам придется настроить эти параметры самостоятельно.

  4. Звезда должна исчезнуть, когда она пересекает границу экрана, независимо от скорости.

Комментарии:

1. Спасибо, это помогло мне немного лучше концептуализировать его.