数字融合,Runge-Kutta,RK4在游戏设计中

new*_*mer 2 math physics numerical-integration game-physics

几乎每场比赛都倾向于使用一些游戏循环.Gafferongames有一篇关于如何制作精心设计的游戏循环的精彩文章:http://gafferongames.com/game-physics/fix-your-timestep/

在他的代码中,他使用integrate( state, t, deltaTime );,我相信state包含对象的位置,速度和加速度.他用RK4将其从整合tt+deltaTime.

我的问题是,为什么使用像RK4这样的数值积分技术,当你可以使用运动学方程(这里)找到确切的值?

这些方程在加速度恒定时起作用.你似乎很少会一个时间步长改变加速度.看起来RK4是一种性能更低,精度更低,更复杂的解决方案.

编辑:我认为您可以为对象添加"混蛋"值,如果您真的想要,仍然可以找到加速度,速度和位移的精确表达式.

编辑2:嗯,我没有仔细阅读他的"集成基础知识"文章.我认为他正在对阻尼器和弹簧进行建模,这会在一个时间步长内造成非恒定的加速度.

Mic*_*son 6

一旦你添加了许多游戏设计师想要的东西,比如(速度相关的)拖拽,位置相关的力等等,这些方程就不再能完全解决了.

所以,如果你很乐意将你的力量限制在运动方程可以处理的那些力量上,那就去吧.如果你想要灵活的东西,那么数值整合是唯一的出路.

注意:如果将力在一段时间内处理为常数,而它们实际上并不是常数 - 那么您实际上正在使用一种数值积分形式.这也是一种不准确的整合形式.那么为什么不使用经过验证的数值方法呢?RK4是许多这样的方法之一.