Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
quest_KG_2010.doc
Скачиваний:
10
Добавлен:
15.04.2019
Размер:
419.33 Кб
Скачать

35. Алгоритм Брезенхема для генерации окружности

Один из наиболее эффективных и простых для понимания алгоритмов генерации окружности принадлежит Брезенхему. Для начала необходимо сгенерировать только одну восьмую часть окружности. Остальные ее части могут быть получены последовательными отражениями, как это показано на рис. Если сгенерирован первый октант (от 0 до 45° против часовой стрелки), то второй октант можно получить зеркальным отражением относительно прямой у = х, что дает в совокупности первый квадрант. Первый квадрант отражается относительно прямой х = 0 для получения соответствующей части окружности во втором квадранте. Верхняя полуокружность отражается относительно прямой у = 0 для завершения построения. На рис. приведены двумерные матрицы соответствующих преобразований.

Для вывода алгоритма рассмотрим первую четверть окружности с центром в начале координат. Заметим, что если работа алгоритма начинается в точке х = 0, у = R, то при генерации окружности по часовой стрелке в первом квадранте у является монотонно убывающей функцией аргументам (рис. 5.2). Аналогично, если исходной точкой является у = 0, х == R, то при генерации окружности против часовой стрелки х будет монотонно убывающей функцией аргумента у. В нашем случае выбирается генерация по часовой стрелке с началом в точке х = 0, у = R. Предполагается, что центр окружности и начальная точка находятся точно в точках растра. Для любой заданной точки на окружности при генерации по часовой стрелке существует только три возможности выбрать следующий пиксел, наилучшим образом приближающий окружность: горизонтально вправо, по диагонали вниз и вправо, вертикально вниз. На рис. 5.3 эти направления обозначены соответственно mH, mD, mV. Алгоритм выбирает пиксел, для которого минимален квадрат расстояния между одним из этих пикселов и окружностью, т. е. минимум из mH = |(xi + 1)2 + (yi)2 -R2|; mD = |(xi + 1)2 + (yi -1)2 -R2|; mV = |(xi )2 + (yi -1)2 -R2|

Рис. 5.2. Окружность в первом квадранте.

Рис.5.3. Выбор пикселов в первом квадранте.

36. Буферы кадра

Кадровый буфер  (буфер кадра, видеобуфер, фреймбуфер) - реальное или виртуальное электронное устройство, или область памяти для кратковременного хранения одного или нескольких кадров в цифровом виде перед его отправкой на устройство видеовывода. Буфер может быть использован для выполнения над кадром различных предварительных операций, организации стоп-кадра, устранения мерцания изображения и др. Обычно кадр хранится в виде последовательности цветовых значений каждого пиксела изображения. Цветовые значения чаще всего хранятся в следующих форматах: одноразрядный (монохромный; 1 бит), 4/8-битный (палитровый), 16-битный (High Color) и 24-битный (True Color); также может присутствовать альфа-канал. Размер памяти, необходимый для хранения одного кадра, зависит от разрешения и глубины цвета.

37. Точки и линии. Преобразование точек и линий

Изучение математического аппарата, лежащего в основе компьютерной графики, начинается с рассмотрения способов вывода и преобразования точек и линий. Эти способы наряду с соответствующими алгоритмами рисования используются для изображения объектов или визуализации графической информации. Возможность проводить преобразования точек и линий является фундаментом машинной графики. Нарисованный объект может быть представлен в нужном масштабе, повернут, перемещен или модифицирован в соответствии с требованиями решаемой задачи.

Точка представляется на плоскости двумя своими координатами, которые определяются как элементы матрицы размером 1´2 [х у]. В трехмерном пространстве используется матрица размером 1´3 [х  у  z].

Иначе говоря, точка может задаваться в виде вектора – столбца     в двумерном пространстве или в виде    – в трехмерном. Строку [х  у] или столбец часто называют координатным вектором. Для формирования такого вектора используется матрица – строка, т. е. множество точек, каждая из которых определяет координатный вектор в некоторой системе измерений. Данное множество хранится в компьютере в виде матрицы или массива чисел. Положением точек можно управлять путем манипулирования соответствующей матрицей. Линии, соединяющие точки, формируют отрезки, кривые и картинки.

Рассмотрим результаты умножения матрицы [х у], содержащей координаты точки Р, на матрицу общего преобразования размером  2´2:                      

Данная запись  означает, что исходные координаты точки х и у преобразуются в х* у* , где x*=ax + cy, y*=bx + by.  Представляют интерес значения х*, у* – координаты результирующей, преобразованной точки Р.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]