Я працюю над створенням фізичного рушія і зараз займаюся механізмами руху. Я пишу цю статтю, щоб закріпити те, що я вивчив на цей момент.
Фізичні симуляції працюють, здійснюючи кілька малих прогнозів на основі законів фізики. Ці прогнози розраховуються за допомогою математичної техніки, що називається інтеграцією. Це частина інтегрального числення, де ми намагаємося обчислити площу під кривою функції. Це можна зробити, обчисливши площу прямокутників між часовими інтервалами. Цей процес повторюється для всіх часових інтервалів під кривою функції, і ці площі додаються, щоб отримати наближену площу під кривою. Як ви можете уявити, чим менші часові інтервали, тим точніше наближення.
Тепер, коли ми розуміємо, що таке інтеграція, як це пов'язано з симуляцією руху? Для того, щоб рухати об'єкт, нам потрібно три речі: прискорення, швидкість і позиція цього об'єкта. Прискорення — це швидкість зміни швидкості. Інтегруючи його за часом, ми обчислюємо швидкість об'єкта. Швидкість — це швидкість зміни позиції. Інтегруючи її за часом, ми отримуємо позицію об'єкта. Цей процес дозволяє нам симулювати рух. Це тип інтеграції, який називається інтеграцією Ейлера (Euler Integration), і це популярна техніка інтеграції для симуляції руху.
На скріншоті вище ви можете побачити, що ми використовуємо змінну під назвою deltaTime. Вона представляє часовий інтервал для розрахунку. Чим менший інтервал, тим точніше наближення.
Як вже згадувалося, це техніка інтеграції Ейлера. Це не єдина техніка інтеграції, яку ми могли б використати. Ейлер — одна з найпростіших і найпопулярніших технік інтеграції для фізики в іграх. Вона достатньо точна для більшості ігрових застосунків. Іншою технікою, яку ми могли б використати, є техніка інтеграції Верле (Verlet Integration). Ця техніка надає кращу точність, ніж техніка Ейлера, і також використовує менше пам'яті при симуляції великої кількості об'єктів. Остання техніка, яку я згадаю, — це техніка інтеграції Рунге-Кутти (Runge-Kutta Integration). Ця техніка накопичує помилки порядку четвертого похідного, що робить її набагато точнішою, ніж техніка Ейлера.
Перекладено з: Simulating Movement with Calculus