Конгер Д.
Физика для разработчиков компьютерных игр
стр. 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 есть указатель на пружины. Этот указатель используется для работы с одномерным динамически выделяемым массивом пружин. Поскольку квадраты ткани расположены в определенных

Новости
Авторы Just Cause показали новый трейлер Generation Zero
Avalanche Studios представила новый трейлер Generation Zero и объявила, что закрытое бета-тестирование пройдёт этой осенью (записаться можно на официальном сайте).
Возможно, SEGA отказалась от защиты Denuvo в переиздании Shenmue I II
Ранее издательство SEGA, разместив в Steam информацию о переиздании Shenmue I & II, указало, что проект будет оснащаться защитой Denuvo.