
- •Часть 2
- •Содержание
- •1 Цель работы
- •2 Построение многоугольников.
- •3 Практическое задание
- •4 Построение сложных линейчатых фигур
- •5 Практическое задание
- •6 Стили и режимы вывода линейчатых фигур
- •7 Практическое задание
- •1 Цель работы
- •2 Многократное рисование фигуры с поворотом относительно центра узора
- •3 Практическое задание
- •4 Создание узоров построением зеркальных отображений.
- •5 Практическое задание
- •6 Масштабирование вписыванием фигур
- •7 Практическое задание
- •8 Штриховка углов
- •9 Практическое задание
- •1 Цель работы
- •2 Наборы последовательно выводимых отрезков с изменением их ориентации
- •3 Практическое задание
- •4 Разветвляющиеся наборы отрезков
- •5 Практическое задание
- •6 Лабиринты Гильберта
- •5 Практическое задание
- •1 Цель работы
- •2 Алгоритмы Брезенхейма
- •3 Практическое задание
- •4 Построение кривых второго порядка
- •3 Практическое задание
- •Часть 2
Министерство общего и профессионального образования
Российской Федерации
Уфимский государственный авиационный
технический университет
Кафедра технической кибернетики
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
к лабораторным работам
по курсу "Интерактивная машинная графика"
для подготовки инженеров по специальности 220200 "Автоматизированные системы обработки информации и управления"
Часть 2
"Линейчатые графические образы"
Уфа 1997
Составитель: О.В. Трушин
УДК 681.3.06
Методические указания к лабораторным работам по курсу
"Интерактивная машинная графика" для подготовки инженеров
по специальности 220200 "Автоматизированные системы обработки информации и управления" Часть 2. "Линейчатые графические образы" / Уфимск. гос. авиац. техн. унив-т; Сост. О. В. Трушин. - Уфа, 1997. - 35 с.
Приведены задания для лабораторных работ по второй части курса "Интерактивная машинная графика", где рассматриваются приемы и методы синтеза линейчатых графических образов с использованием как простых, так и достаточно сложных алгоритмов. Рассматриваемые алгоритмы реализованы на языке Turbo-Pascal_7 в форме, позволяющей при необходимости легко адаптировать их для других систем программирования.
Ил. 6 . Библиогр.: 10 наимен.
Рецензенты: В. Н. Мукасеева
М. Е. Сидоров
Содержание
Стр.
Введение ........................................................................................ 4
Лабораторная работа № 1.
Алгоритмы синтеза фигур из отрезков прямых ............................ 6
Лабораторная работа № 2.
Приемы синтеза линейчатых графических узоров ....................... 12
Лабораторная работа № 3.
Применение рекурсии при синтезе графических образов ............. 19
Лабораторная работа № 4.
Растровые алгоритмы ................................................................... 26
Список литературы ....................................................................... 34
Введение
Большинство компьютерных графических образов при ограниченности вычислительных ресурсов чаще всего создается как набор отрезков прямых линий, отображающий обычно каркас моделируемого объекта. Подобные модели объектов легко и быстро можно отображать и при необходимости трансформировать как для статических, так и для динамических сцен, в особенности трехмерных. Объекты при этом кодируются как совокупность набора координат вершин и последовательности обхода контура по этим вершинам.
При работе с линиями можно определять их режимы вывода и стили. Для отрезков прямых линий режим построения задается оператором
SetWriteMode(
N )
N=0 ( режим CopyPut ) - замещение линией изображения на экране, этот режим используется по умолчанию,
N=1 ( режим XorPut ). - изображение комбинируется. По логической операции Xor ("исключающее ИЛИ") исходное значение цвета пиксела на экране побитово складывается с цветом пиксела выводимой линии. Результирующий бит равен единице при различных значениях соответствующих бит, иначе - равен нулю.
Например, при выводе красной линии на желтом фоне в режиме XorPut получим
0100 ( красный )
xor 1110 ( желтый )
1010 ( светло-зеленый)
Функция Xor, примененная к одной переменной дважды, восстанавливает ее исходное значение ( J xor I ) xor I = J . При повторном проведении линии на том же месте в режиме XorPut изображение этой
линии уничтожается, а цвет пикселов экрана становится исходным
1010 ( светло-зеленый)
xor 0100 ( красный )
1110 ( желтый )
Этот прием удобно использовать при создании движущихся линейчатых изображений без порчи фонового изображения.
Толщину и форму ( стиль ) линий отрезков прямых, прямоугольников, окружностей, эллипсов можно задать оператором
SetLineStyle( F, P, T ) ,
где F - форма, Р - стиль, T - толщина линии.
Форма линии задается как:
F=0 - сплошная,
F=1 - пунктирная,
F=2 - штрих-пунктирная,
F=3 - штриховая,
F=4 - форма линии определится параметром Р, причем при F<4 значение Р игнорируется.
Стиль линии Р - это число, двоичное представление которого отображает заполнение повторяющегося фрагмента линии длиной 16 пикселов. Если разряд числа равен 1, то пиксел высвечивается, 0 - не высвечивается. Удобно использовать шестнадцатеричную форму записи числа. Например:
P = $35F1 = 0 0 1 1 0 1 0 1 1 1 1 1 0 0 0 1
( двоичное )
отобразит стиль:
Можно использовать десятичную форму записи:
0<= P <= 65535= 216-1.
Толщина линии может принимать два значения:
T=1 - тонкая ( 1 пиксел ),
T=3 - толстая ( 3 пиксела ).
Применяя к исходным стилям линий пользователя логические
операции, можно получать новые стили. Например:
P1 and P2 - линии из совпадающих элементов,
P1 or P2 - добавление элементов стилей,
P1 xor P2 - обнуление совпадающих элементов,
not P2 - инверсный для P2 стиль.
Лабораторная работа № 1
Алгоритмы синтеза фигур из отрезков прямых