Численная интеграция, Рунге-Кутта, RK4 в игровом дизайне - PullRequest
2 голосов
/ 28 марта 2012

Почти каждая игра имеет тенденцию использовать некоторые игровые циклы.У Gafferongames есть отличная статья о том, как сделать хорошо спроектированный игровой цикл: http://gafferongames.com/game-physics/fix-your-timestep/

В своем коде он использует integrate( state, t, deltaTime );, где, как мне кажется, state содержит положение, скорость и ускорение объекта.,Он использует RK4, чтобы интегрировать его от t до t+deltaTime.

Мой вопрос: зачем использовать метод численного интегрирования, такой как RK4, когда вы можете использовать уравнения кинематики ( здесь ) длянайти точное значение?

Эти уравнения работают, когда ускорение постоянное.Кажется редким, что у вас будет изменяющееся ускорение в пределах с шагом времени.Похоже, что RK4 - это более низкая производительность, более низкая точность и более сложное решение.

Редактировать: Я думаю, что вы могли бы добавить значение "рывка" к объектам и по-прежнему находить точные выражения для ускорения, скорости и смещения, еслиВы действительно хотели.

Редактировать 2: Ну, я не слишком внимательно прочитал его статью «Основы интеграции».Я думаю, что он моделирует демпфер и пружину, которые вызывают непостоянное ускорение в пределах временного шага.

Ответы [ 2 ]

6 голосов
/ 28 марта 2012

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

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

Примечание: если вы рассматриваете силы как постоянные в течение интервала времени, когда они не являются действительно постоянными - тогда вы фактически используете форму численного интегрирования. И это тоже неточная форма интеграции. Так почему бы не использовать проверенный и проверенный численный метод? RK4 является одним из многих таких методов.

2 голосов
/ 28 марта 2012

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

Представьте себе разбиение временного диапазона T на N равных шагов по ширине h=T/N.Теперь интегрируем динамические уравнения поэтапно.В RK4 локальная ошибка на шаг составляет O(h^5), что дает глобальную ошибку O(h^4).

Используя кинематические уравнения, как вы предлагаете, мы можем оценить ошибку, рассматривая расширение положения Тейлора, сохраняя слагаемые во втором порядке.Позиция будет иметь ошибку O(h^3), введенную на каждом шаге, в соответствии с тем, где вы усекаете расширение.Это дает локальную ошибку O(h^3) и глобальную ошибку O(h^2).

Исходя из асимптотической ошибки, ошибка от RK4 стремится к нулю намного быстрее, чем кинематические уравнения.Это точнее.RK4 получает очень хорошую точность, полученную для числа оценок функций, которые необходимо выполнить.

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