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

В строках 4-9 листинга 9.2 функция Gamelnitialization () подготавливает матрицу отображения. В строках 13-16 подготавливается матрица проецирования. Поскольку позиция наблюдения и перспектива не изменяются от кадра к кадру, их не нужно пересчитывать, как это обычно происходит в примерах программ, поставляемых с SDK DirectX. В нашем примере матрицы отображения и проецирования создаются только один раз и после этого не изменяются.

В строке 19 листинга 9.2 функция Gamelnitialization () загружает сетчатую модель, которая должна использоваться данным твердым телом. Это сетчатая модель тигра из SDK DirectX.

Инициализация объекта класса d3d_rigid_body начинается в строке 21. В строках 21-24 задаются вращательные характеристики тигра. Вероятно, вас интересует, откуда взяты значения вращательной инерции в строке 23. Они вычислены - тигр рассматривался как цилиндр, и использовались формулы из рисунка 9.9. Обратите внимание, что в начальный момент работы программы тигр смотрит на вас - вдоль оси z. Если рассматривать тигра как цилиндр, то при вращении вокруг оси z используется формула I = MR2 / 2. Но при вращении вокруг осей х или у используется формула I = MR2 / 2 + ML2 /12. При расчетах я использовал длину 2 м (без учета хвоста) и массу 100 кг.

Кроме того, в функции Gamelnitialization () также задается начальная сила, приводящая тигра в движение. Это делается в строках 26-29. Здесь есть один важный момент. Я создал для этой программы класс force для представления сил. Вместо сил, представляемых векторами и действующих на объекты, в которых они хранятся, теперь силы представляют собой самостоятельные объекты. Такое выделение необходимо, поскольку для описания силы во вращательной динамике нужно больше информации, чем в линейной. В линейной динамике силы всегда действуют на центр массы тела. Во вращательной динамике это не так. Работая с вращающимися твердыми телами, нужно учитывать силы, приложенные к разным точкам поверхностей этих тел.

Почему силы могут прикладываться к разным точкам твердых тел?

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

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






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