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

расположения и ориентации объектов в трехмерном пространстве. Если в вашей программе используется множество объектов класса d3d_po-int_mass, движущихся по сцене, то для просчета движения каждого такого объекта понадобится своя глобальная матрица. Именно она и хранится в элементе worldMatrix объекта и считывается из него при вызове метода Update () в программе. В методе Render () эта матрица используется для просчета перемещения материальной точки.

Кроме private-элементов данных, в определении класса объявлены public-методы этого класса (строки 15-42 листинга 7.1). Большая часть этих методов просто считывает или записывает значения элементов данных. Основную работу в классе выполняют методы LoadMesh (), Update () и Render (). Метод LoadMesh () настолько прост, что объявлен как встраиваемый в файле PMPointMass. h. Код этого метода приведен в листинге 7.2.

Этот метод загружает сетчатую модель объекта, определяющую его внешний вид, с помощью метода d3d_mesh: :Load().

Подсказка

В строке 4 листинга 7.2 метод LoadMesh() использует макрос assert (), чтобы гарантировать, что имя файла имеет ненулевую длину. Если программа вызовет этот метод, передав ему пустое имя файла, то выполнение программы аварийно завершится. Ошибка такого рода - это скорее ошибка программиста, чем ошибка времени выполнения. Макрос assert О гарантирует, что все ошибки такого рода будут устранены, прежде чем программа будет выпущена. Вообще говоря, он очень удобен для защиты от ошибок программистов в параметрах вызова функций.

Методу Update () приходится работать больше. Его код приведен в листинге 7.3.

Метод Update () класса d3d_point_mass просчитывает линейную динамику материальной точки. Пока он игнорирует существенные моменты реального мира - вращение, трение и силу тяжести. Однако эта его версия позволит в будущем учесть все эти моменты.

Метод Update () начинается с проверки массы материальной точки. Она должна быть ненулевой. Это важная проверка, поскольку она позволяет обнаруживать часто встречающуюся ошибку программирования. Масса не должна быть нулевой или отрицательной - это невозможно физически.




Новости
Список персонажей SoulCalibur 6 пополнил Вольдо
В Сети появился новый трейлер SoulCalibur 6, посвящённый Вольдо — он пополнил список персонажей, которые будут доступны в день релиза игры.
Анонсирован скорый выход обновления «Ночная жизнь» в GTA Online
Компания Rockstar представила трейлер обновления «Ночная жизнь» для GTA Online.