Интегрирование Верле
Метод численного интегрирования Верле (Verlet integration), или метод Штёрмера — численный метод, используемый для интегрирования уравнений движения материальной точки (
). Часто используется для вычисления траекторий частиц в моделях молекулярной динамики и в компьютерных играх. Метод Верле более устойчив, чем более простой метод Эйлера, и имеет при этом другие качества, необходимые для моделирования физических процессов в реальном времени.
Назван в честь французского физика Лу Верле (Loup Verlet), который своей статьёй 1967 года популяризовал метод. Часто некорректно именуется «алгоритмом Верлета». Популярность у разработчиков компьютерных игр метод получил в 2000 году с выходом игры Hitman: Codename 47.
Основной алгоритм [править]
Алгоритм Верле [1] используется для вычисления следующего местоположения точки по текущему и прошлому, без использования скорости. Формула получается следующим образом. Записывается разложение в ряд Тейлора вектора
местоположения точки в моменты времени
и
.
Где
— позиция точки,
— скорость,
— ускорение,
— рывок (производная ускорения по времени).
Сложив эти 2 уравнения и выразив
, получим:
Таким образом, значение радиус-вектора точки может быть вычислено без знания скорости.
Ограничения [править]
Основная особенность алгоритма состоит в возможности накладывать на систему точек различные ограничения. Например, можно связать некоторые из них твёрдыми стержнями заданной длины. При этом алгоритм работает следующим образом:
- Вычисляются новые положения тел (см. формулу выше).
- Для каждой связи удовлетворяется соответствующее ограничение, то есть расстояние между точками делается таким, каким оно должно быть.
- Шаг 2 повторяется несколько раз, тем самым все условия удовлетворяются (разрешается система условий).
Данный метод, несмотря на многократное повторение шага 2, очень эффективен.
Ссылки [править]
- Лекция «Реализация физики на основе интегрирования Верлета» на сайте GameDev.ru
- Перевод (не очень удачный) статьи «Advanced Character Physics»
| В другом языковом разделе есть более полная статья Verlet integration (англ.)
Вы можете помочь проекту, расширив текущую статью с помощью перевода.
|




