Моделирование волн на поверхности жидкости
7
Правое ребро будет обработано соседним справа треугольником.
Кроме того, вершина треугольника, имеющая минимальную коор-
динату по
y
, будет обработана не этим треугольником, а располага-
ющимся на экране выше.
При многократном наложении прозрачных треугольников увели-
чивается коэффициент в буфере коэффициентов прозрачности. По-
этому в программе выполняется следующая проверка: если сумма
текущего значения коэффициента прозрачности превышает заданный
предел, то значение буфера коэффициентов и интенсивности не из-
меняется.
Для обеспечения большего быстродействия в программе не ис-
пользуется установка значения цвета пиксела методом Bit-
map.SetPixel(int x,int y,Color SetColor) из-за его медленной работы.
Вместо него проделывают работу с классом BitmapData до начала
работы алгоритма. Данный класс позволяет преобразовать значения
альфа-канала и RGB-компонент в одномерный массив байтов. Ис-
пользование массива не увеличивает существенным образом время
работы алгоритма, так как можно получить быстрый доступ к любо-
му элементу массива, вычисляя его адрес по индексу. После этапа
формирования массив передается в программу, реализующую алго-
ритм закраски. Данное преобразование значительно ускоряет работу
алгоритма.
На рис. 1 – 7 приведены результаты работы программы.
Рис. 1.
Каркасная модель бегущей волны