
- •Элементы интерактивной компьютерной графики
- •Класс 2: двухуровневые или представляемые в нескольких «цветах» изображения
- •Структура графического изображения
- •Блок-схема графической системы
- •Методы кодирования графической информации
- •Позиционные методы кодирования ги. Рецепторный метод кодирования
- •Метод тетрарного дерева
- •Структурные методы кодирования Цепной метод кодирования
- •Кусочно – линейная аппроксимация контура изображения
- •Аппроксимация группы точек окружностью
- •Аналитические методы кодирования
- •Методы структурно – символического кодирования
- •Типичная система команд дисплейного процессора
- •Форматы дисплейных команд
- •А) Команды, управляющие лучом гд.
- •Геометрические преобразования
- •Двумерные преобразования Перенос (сдвиг)
- •Масштабирование
- •Поворот изображения
- •Однородные координаты и матричное представление двумерных преобразований
- •Композиция двумерных преобразований
- •Вопросы эффективности
- •Матричное представление трехмерных преобразований
- •Видовая операция (отсечение части изображения по прямоугольному окну)
- •Высокопроизводительные графические преобразования
- •Алгоритмы растровой графики
- •Алгоритм Брезенхэма для отрезков прямых
- •Растровая развертка окружностей
- •Алгоритм брезенхема для генерации окружности
- •Типы графических дисплеев Векторный дисплей
- •Организация памяти в растровых графических дисплеях
- •Организация дисплейного файла
Вопросы эффективности
Композиция наиболее общего вида, составленная из операций R, S и Т, имеет матрицу
R11 R12 0
A = R21 R22 0
Mx
My
1
Ее верхняя часть размером является объединенной матрицей поворота и масштабирования, в то время как mx и my описывают суммарный перенос. Для вычисления Р*М как произведения вектора на матрицу размером 3x3 требуются 9 операций умножения и 6 операций сложения. Структура последнего столбца матрицы в выражении позволяет упростить фактически выполняемые действия:
x' = x * R11 + y * R21 + Mx
y' = x * R12 + y * R22 + My
сводя процесс к 4 операциям умножения и 4 операциям сложения.
Это существенно ускоряет процесс, особенно если учесть, что преобразованиям могут подвергаться сотни и даже тысячи точек на каждом изображении. Таким образом, несмотря на то, что матрицы размером 3x3 удобны и полезны для совмещения преобразований, в программе целесообразно использовать результирующую матрицу с учетом особенностей ее структуры. Если же умножение матриц выполняется аппаратно с помощью параллельно работающих сумматоров и умножителей, то вопрос эффективности перестает быть актуальным.
Другой областью применения, в которой важно быстродействие, является генерация последовательных кадров — изображений объекта (такого, как молекула или самолет), когда каждый следующий кадр отличается от предыдущего поворотом объекта в несколько градусов. Если каждое изображение строится и выводится на экран дисплея достаточно быстро (в течение 30 — 60 мс), то поворот объекта будет казаться непрерывным и плавным. Для достижения такого быстродействия каждую точку и линию объекта следует преобразовывать как можно быстрее. В уравнения поворота входят 4 операции умножения и 2 операции сложения. Эту оценку можно улучшить, воспользовавшись тем, что угол Θ мал (несколько градусов) и cos Θ 1 .
При такой аппроксимации уравнения поворота принимают вид
х' = х — y * sin Θ, y' = x' * sin Θ + y,
и тогда требуется только 2 операции умножения и 2 операции сложения.
Экономия двух операций умножения может оказаться существенной для ЭВМ, не имеющих аппаратно реализованных операций умножения. Можно получить еще лучшую аппроксимацию, если во втором уравнении использовать х' вместо х:
x' = x — y * sin Θ, y' = x' * sin Θ + y
Определитель соответствующей матрицы размером 2x2 теперь равен 1, как и определители всех матриц поворота.
Однако здесь возникает одно затруднение. Формулы представляют собой аппроксимацию точных значений х' и у' с некоторой небольшой ошибкой. Каждый раз, когда формулы применяются к новым значениям х и у, ошибка слегка увеличивается. При достаточно большом числе повторений ошибка станет сравнимой с самими значениями. В результате изображение поворачивающегося образа объекта все в большей степени будет выглядеть как совокупность линий, вычерченных случайным образом.
Это затруднение можно преодолеть, если сохранять исходный список (х, у) координат. После каждого поворота на 360° полученные в результате данные отбрасываются, а для последующего вращения берутся исходные данные. Для дополнительного списка координат потребуется память. В этом нет ничего удивительного, поскольку справедлива пространственно-временная зависимость между пошаговым и абсолютным поворотом! Преимущества, которые дает пошаговый поворот, нельзя получить, ничем не жертвуя.