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

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

Чтобы упростить разделение ткани на квадраты, в классе cloth определен ряд внутренних типов и констант. Все константы включены в перечисление cloth_constants, определенное в строках 5-19 листинга 12.7. Эти константы задают количество материальных точек в квадрате (конечно, 4) и позицию каждой материальной точки в квадрате. Кроме того, константы задают количество и расположение пружин, соединяющих материальные точки.

Тип index_pair позволяет легко задавать строки и столбцы материальных точек и квадратов. Он используется в типе cloth_square, определенном в строках 26-30 листинга 12.7. Каждый экземпляр типа cloth_square содержит массив элементов типа index_pair (строка 28 листинга). Этот массив хранит номера строк и столбцов для каждой из материальных точек в квадрате. Кроме того, в типе cloth_square определен целочисленный массив. В нем хранятся индексы пружин в квадрате.

Если вы посмотрите еще раз на рисунок 12.2, то увидите квадраты, образующие ткань, и заметите, что и материальные точки, и пружины входят в состав нескольких квадратов. Поэтому хранить их в типе cloth_ square бессмысленно — это приведет к их дублированию и напрасной трате памяти.

Private-элементы данных класса cloth объявлены в строках 34-40 листинга 12.7. В этих элементах данных хранится количество строк и столбцов в системе, а также общее количество пружин в ней.

В строке 37 объявлен указатель на указатели на объекты point_ mass. Его использование позволяет классу cloth динамически выделять под ткань произвольное количество материальных точек. Как вы вскоре увидите, этот указатель используется в конструкторе для динамического выделения двумерного массива.

Замечание

Не забывайте - класс cloth в программе использует массив объектов класса point_mass, а не invisible_point_mass, поскольку мы не будем связываться с деформацией сетчатых моделей. Вместо этого мы отобразим ткань в виде набора сетчатых моделей материальных точек. Это будет не слишком реалистично, но если вы хотите получить реалистично выглядящую ткань, то должны уметь выполнять деформацию сетчатых моделей и использовать в классе cloth массив объектов класса invisible_po-int mass.

Кроме того, в классе cloth есть указатель на пружины. Этот указатель используется для работы с одномерным динамически выделяемым массивом пружин. Поскольку квадраты ткани расположены в определенных

Новости
Авторы Max Payne раскритиковали крупные игры
Глава по коммуникации студии Remedy Томас Пуха заявил, что в нынешних реалиях игрового рынка его команде пришлось реорганизовать производство.
Ubisoft выпустит эксклюзивную фигурку Father’s Calling
Компания Ubisoft сообщила, что коллекционная фигурка Father’s Calling, представляющая собой лидера организации «Врата Эдема» из Far Cry 5, поступит в продажу 22 марта 2018 года по цене 3999 рублей.