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

Вместо того чтобы задавать пределы сжатия и растяжения, можно стабилизировать системы масс и пружин, применяя дополнительные силы, гасящие колебания. Эти силы предотвращают хаотичное движение частиц — колебания быстро затухают, и система замирает. Такое решение просто реализовать в программах, и оно не требует больших объемов дополнительных вычислений для использования, поэтому оно широко применяется. Дополнительное затухание вводится на уровне всей системы, то есть в классе cloth, а не spring. Причина этого - в разных типах систем масс и пружин используются разные виды затухания.

Сам класс spring не слишком сложен. Определение этого класса приведено в листинге 12.5.

В классе spring объявлены пять элементов данных. В первом из них хранится длина пружины в состоянии покоя, то есть не сжатой и не растянутой. В строках 5-6 листинга 12.5 определены элементы данных для хранения характеристик к и b пружин.

Кроме того, в классе spring объявлены указатели на материальные точки, к которым крепятся пружины. Обратите внимание — это указатели на тип point_mass_base. Это позволяет нам прикреплять пружины как к видимым, так и к невидимым материальным точкам. Проще говоря, указатели, объявленные в строках 8-9 листинга 12.5, могут указывать на объекты как класса point_mass, так и класса invisible_point_mass.

В строках 14-32 определены методы чтения и записи значений в элементы данных. Метод IsDisplaced() определяет, растянута пружина или сжата. Метод CalculateReactions () вычисляет силу, прикладываемую пружиной к материальным точкам, к которым она прикреплена. Код этих двух методов приведен в листинге 12.6.

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