Конгер Д.
Физика для разработчиков компьютерных игр
стр. 259

Теперь у нас есть еще две неизвестные. Это vfcml и vfcm2 - скорости центров масс твердых тел 1 и 2 после столкновения. Поскольку у нас появились две новые неизвестные, нам нужны еще два уравнения. Их можно получить из формул для нахождения вращающего момента:

Приравняв эти две формулы друг к другу, мы получим:

Применив это равенство к каждому из твердых тел, участвующих в столкновении, мы получим:

Выполнив подстановки и преобразовав результат, мы получим:

Впечатляет, не правда ли? Пришлось поднапрячься, но мы получили

формулу для вычисления импульсной силы, учитывающую и линейную, и угловую реакцию тел на столкновение. Обратите внимание - вектор п в этой формуле есть единичный нормальный вектор в точке Р.

Вот и все, что нам понадобится. Если мы можем задать импульсную силу и точку, в которой она возникает, мы можем передать эту информацию классу d3d_rigid_body, представленному в главе 9. При этом можно просчитать поведение каждого тела в столкновении. Перейдем к коду.

Обновление платформы физического моделирования

В главе 9 мы рассмотрели класс d3d_rigid_body, моделирующий как вращательную, так и линейную динамику твердых тел. В этой главе мы расширим возможности данного класса и модифицируем платформу физического моделирования, частью которой он является. Начиная с этой главы, классы d3d_mesh и d3d_rigid_body имеют гораздо больше отношения к физическому моделированию, чем к Direct3D. Поэтому я переименовал их просто в mesh и rigid_body.

Кроме того, теперь платформа физического моделирования будет состоять из трех библиотек. Первая - это математическая библиотека, созданная в главе 2 «Имитация ЗБ-графики с помощью DirectX» и главе 3 «Математические инструменты». Вторая - это графическая библиотека, выполняющая подготовку Direct3D к запуску. В этой главе во второй библиотеке будет содержаться только класс d3d_app.

Новости
Новый ролик Fallout 76 посвятили совместной работе
Компания Bethesda опубликовала новый ролик Fallout 76, продолжающий серию обучающих видео «Время приключений».
Battle for Azeroth: до 120-го уровня добрались за пять часов
Первый в мире игрок 120-го уровня появился уже через четыре с лишним часа после открытия аддона.