РАСТРОВЫЕ МЕТОДЫ ГЕОМЕТРИЧЕСКИХ ПРЕОБРАЗОВАНИЙ
Характеристики растровых систем предлагают альтернативный метод выполнения определенных двухмерных преобразований. Растровые системы хранят информацию об изображениях как цветовые схемы в буфере кадров. Следовательно, некоторые простые преобразования объектов можно выполнить быстро, манипулируя массивом значений пикселей. Требуется всего лишь несколько арифметических операций, так что преобразования пикселей очень эффективны.
Как отмечалось в разделе 3.19, функции работы с прямоугольными массивами пикселей называются растровыми операциями, а перемещение блока значений пикселей именуется пересылкой блока, поблочной передачей или передачей пикселей. Обычно в графическом пакете имеется несколько процедур для выполнения определенных растровых операций.
На рис. 5.26 иллюстрируется двухмерная трансляция, реализованная как блочная передача области буфера регенерации. Все значения битов в показанной прямоугольной области копируются как блок в другую часть буфера кадров. Набор значений
Рис. 5.26. Трансляция объекта из положения а в положение б путем перемещения прямоугольного блока значений пикселей. Точки Рщіп и РШах задают границы перемещаемого прямоугольного блока, а Ро - целевую опорную точку
Рис. 5.27. Поворот массива значений пикселей. Исходный массив показан на панели а, положение элементов массива после поворота на 90° против часовой стрелки показано на панели б, а положение элементов массива после поворота на 180° приводится на панели в в исходном положении можно вытереть, присвоив всем пикселям этого блока цвет фона (предполагается, что вытираемый объект не перекрывается с другими объектами сцены).
Повороты с шагом 90° легко выполняются путем переупорядочения элементов массива пикселей. Двухмерный объект или узор можно повернуть на 90° против часовой стрелки, обратив значения пикселей в каждой строке массива, а затем поменяв местами строки и столбцы. Поворот на 180° достигается путем обращения порядка элементов каждой строки с последующим обращением порядка строк. На рис. 5.27 демонстрируются манипуляции с массивом, которые можно использовать для поворота блока пикселей на 90° и 180°.
Рис. 5.28. Растровый поворот прямоугольного блока пикселей можно выполнить, отобразив искомые области пикселей в повернутый блок
Рис. 5.29. Отображение искомых областей пикселей в масштабированный массив значений пикселей. Преобразование выполняется с масштабными коэффициентами я* = ву = 0,5 и неподвижной точкой (ху, ур)
Чтобы повернуть массив на угол, не кратный 90°, требуется больше работы. Общая процедура иллюстрируется на рис. 5.28. Каждая искомая область пикселей отображается в повернутый массив, и вычисляется величина наложения с повернутыми областями пикселей. Цвет целевого пикселя вычисляется как среднее цветов накладывающихся исходных пикселей, учитываемых с весовыми коэффициентами, равными доле накладывающейся площади. Или же для определения цвета получаемых пикселей можно использовать метод аппроксимации (как в схеме защиты от наложения).