#c# #math #vector #xna
#c# #математика #вектор #xna
Вопрос:
Для тех из вас, кто точно не помнит, как выглядела старая заставка Windows Starfield screensaver, вот видео на YouTube: http://www.youtube.com/watch?v=r5AoFiVs2ME
Прямо сейчас я могу генерировать случайные частицы («звезды») внутри в определенном радиусе. С чем у меня возникли проблемы, так это с поиском наилучшего способа достижения результатов, показанных в приведенном выше видео.
Вопрос: Учитывая, что у меня есть координаты (векторы) для моих случайно сгенерированных частиц. Каков наилучший способ и / или уравнение задать им направление (вектор), чтобы они перемещались по экрану способом, который очень похож на тот, который виден на старой заставке?
Спасибо!
Ответ №1:
Кажется, что они удаляются от центра. Вы могли бы попытаться вычислить вектор от центральной точки экрана до сгенерированного положения частицы? Затем используйте то же направление для перемещения частицы и ускоряйте ее до тех пор, пока она не окажется за пределами экрана.
Комментарии:
1. Этот ответ вместе с ответом непосредственно под ним от eykanal были именно тем, что я искал. Оказывается, я делал это намного, намного сложнее.
Ответ №2:
Базовый алгоритм, с которым вы можете работать:
-
Генерируйте звезды в случайном месте с трехмерным распределением по гауссу (наиболее вероятно в середине экрана, менее вероятно по мере удаления от экрана). Обратите внимание, что вектор движения звезды определяется этой начальной точкой… движение будет эффективно перемещаться вдоль линии, образованной исходной точкой и исходным местоположением, наружу.
-
Присвойте каждой вновь созданной звезде расстояние. Обратите внимание, что расстояние не зависит от места старта.
-
Перемещайте звезду по прямой с экспоненциально возрастающей скоростью, одновременно уменьшая расстояние до нее. Вам придется настроить эти параметры самостоятельно.
-
Звезда должна исчезнуть, когда она пересекает границу экрана, независимо от скорости.
Комментарии:
1. Спасибо, это помогло мне немного лучше концептуализировать его.