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

точкам, к которым она прикреплена. Первый шаг, необходимый для вычисления этой силы, - найти длину пружины в данный момент. Это делается в строках 38-39. В отличие от метода IsDisplaced (), метод CalculateReactions () не может обойтись квадратом длины и вынужден вычислять квадратный корень.

Замечание

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

Далее метод CalculateReactions () вычисляет магнитуду вектора, определяющего длину пружины в данный момент. В строке 47 он находит разность между этой длиной и длиной пружины в состоянии покоя. Эта разность умножается на жесткость пружины в соответствии с формулой F = —кх, где х - изменение длины пружины относительно равновесного состояния.

Гасящая сила вычисляется в строках 61-71. Вычисленная величина силы, которую развивает пружина, может оказаться меньше, чем величина гасящей силы. Так ли это, зависит от значений жесткости пружины (к) и коэффициента затухания (Ь). Если коэффициент затухания велик по сравнению с жесткостью пружины, то сила затухания может превзойти силу, развиваемую пружиной. Однако это невозможно с физической точки зрения. Поэтому оператор if в строках 74-77 гарантирует, что гасящая сила не превысит силы, развиваемой пружиной. Это в значительной степени гарантирует устойчивость моделируемой системы масс и пружин.

В строках 80-81 метод CalculateReactions () находит итоговую силу, прикладываемую пружиной к материальным точкам, к которым эта пружина прикреплена. В строках 84-86 величина этой силы преобразуется в вектор. Метод CalculateReactions () заканчивается прикладыванием этой силы (в противоположных направлениях) к обеим материальным точкам в качестве импульсной силы.

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

Класс doth

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

Новости
Антивирусы и облачные сервисы портят сохранения Dark Souls Remastered
Вчера комьюнити-менеджер Bandai Namco под ником Izmar подтвердил проблему в Steam, посоветовав ограничить доступ антивирусов и других программ вроде облачных сервисов Google и Amazon к файлам ремастера Dark Souls.
Facebook анонсировала новую игровую платформу с интерактивными видео
«Facebook анонсировала несколько новых функций видеотрансляций, которые позволят пользователям сделать свои прямые трансляции похожими на игры с опросами и викторинами», — отмечает The Verge.