Анимация броуновского движения
Подскажите, пожалуйста, как создать анимацию броуновского движения? Объект должен двигаться по экрану меняя финальные координаты при достижении, например, границы активности. В идеале в пределах активности/фрагмента, но можно и с разлетом за предел. Из мыслей только динамически задавать новые координаты при достижении текущих, но эта идея не нравится.
Ответы (1 шт):
Я полагаю ТС интересует не техника, а математика - как моделировать.
Делается это так:
- Задаем начальные координаты частицы
{X0, Y0} - Далее для каждой координаты задаем случайную вероятность, скажем
{Px, Py}(P - вероятность от 0 до 1) - Вычисляем смещение вдоль каждой координаты через инверсную функцию вероятностей Гаусса
X1=X0+InvGauss(Px), Y1=Y0+InvGauss(Py) - Далее по циклу вычисляем на основе
{x1, y1}уже{x2, y2}и.т.д.
Физический смысл состоит в том, что частица в ходе броуновского движения испытывает множественные случайные столкновения, которые как раз и описываются распределением вероятности Гаусса т.н. шапкой Гаусса
Вычисление инверсной функции Гаусса (то есть вычисление из вероятности величины отклонения) можно найти здесь
Величину прыжков частицы можно регулировать параметром sigma - среднеквадратичным отклонением.
Также в помощь симуляция броуновского движения на Excel