Главная > Алгоритмы машинной графики и обработки изображений
НАПИШУ ВСЁ ЧТО ЗАДАЛИ
СЕКРЕТНЫЙ БОТ В ТЕЛЕГЕ
<< Предыдущий параграф Следующий параграф >>
Пред.
След.
Макеты страниц

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

Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике

ДЛЯ СТУДЕНТОВ И ШКОЛЬНИКОВ ЕСТЬ
ZADANIA.TO

Глава 14. МАТЕМАТИЧЕСКИЕ АСПЕКТЫ ДВУХМЕРНОЙ МАШИННОЙ ГРАФИКИ

14.1. ВВЕДЕНИЕ

Основной задачей машинной графики является воспроизведение изображений на экране, исходя из их математических описаний. Для этого требуется создание (обычно с помощью главной ЭВМ) файла воспроизведения визуального отображения, который затем передается в устройство отображения графической информации. В векторной графике для управления устройствами отображения требуются команды типа «провести вектор», и поэтому содержимое файла воспроизведения визуальных отображений

составляют главным образом элементарные команды. В растровой графике команды типа «провести вектор» не относятся к категории элементарных и устройство отображения преобразовывает их в соответствующие конфигурации пикселов, хранящиеся в памяти обновления изображения. Строго говоря, большинство растровых графических устройств не располагают файлом воспроизведения визуального отображения. Целесообразно, однако, описывать работу этих устройств, оперируя этим файлом, независимо от того, каким именно образом устройство отображения его формирует. При воспроизведении очень простых изображений формирование файла воспроизведения визуального отображения тривиально, однако по мере роста сложности искомых отображений эта задача становится все более и более трудной.

Пример 14.1. Для того чтобы воспроизвести на экране дисплея изображение квадрата с яркостью и длиной стороны разместив одну из его вершин в точке и ориентировав стороны параллельно вертикальной и горизонтальной осям координат, можно воспользоваться следующей последовательностью команд из набора, приведенного в разд. 1.7 (см. табл. 1.1):

Эту группу команд можно рассматривать как некоторую процедуру (квадрат). Для устранения изображения такого квадрата можно обратиться к процедуре (Ниже рассматриваются возможные побочные эффекты стирания.) Более трудной задачей является заполнение квадрата произвольной ориентации определенным цветом, для чего необходимо воспользоваться одним из алгоритмов, рассмотренных в гл. 8. В то же время квадрат, стороны которого расположены вертикально и горизонтально, можно интерпретировать как фрагмент изображения (окно) и для воспроизведения и заполнения изображения можно воспользоваться следующей программой:

Мы будем называть ее программой

Этот пример иллюстрирует еще одну проблему, которая обычно возникает при использовании устройств отображения графической информации. Данный набор команд не определяет, является ли заданная вершина верхней левой, нижней левой, верхней правой или нижней правой. Ответ определяется типом графического дисплея! В некоторых из них предполагается, что начало координат помещается в нижнем левом углу, а в других — в верхнем правом. В некоторых случаях начало координат можно задавать с помощью какой-либо графической команды, в других же пользователь должен формировать файлы, учитывая начало координат, определяемое собственно устройством.

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

Алгоритм 14.1. Движущийся квадрат

(см. скан)

Шаг 2 обеспечивает воспроизведение изображения квадрата со стороной и цветом а шаг 4 обеспечивает воспроизведение изображения квадрата аналогичного размера и рвета 0, т. е. стирание изображения квадрата, воспроизведенного на шаге Команда (замри) дает программе указание прекратить исполнение на Т единиц времени для того, чтобы квадрат можно было увидеть прежде, чем он будет стерт. Во многих системах с разделением времени суммарное время ожидания и выполнения команд достаточно велико и поэтому дополнительные задержки не нужны. Вместо процедуры можно использовать процедуру для того, чтобы получить такой же результат для заполненного квадрата. При программировании более сложных перемещений необходимо изменить шаг 5. Если, однако, требуется предусмотреть повороты, то необходимо изменить основную программу воспроизведения изображения квадрата, поскольку при поворотах стороны квадраты перестают быть параллельными осям координат. Еще одна проблема может возникнуть в связи с тем, что квадрат при перемещении может выйти за пределы экрана. За этим необходимо следить, и соответствующие команды следует изменить таким образом, чтобы воспроизводилась лишь та часть квадрата, которая находится в пределах допустимых границ воспроизводимого изображения. Таким образом, часть квадрата должна быть отсечена. (Выполнение отсечения нельзя возлагать на устройство воспроизведения отображения. Более подробные сведения по этому поводу приведены в разд. 15.1.)

Пример 14.3. Требуется воспроизвести изображение куба таким образом, чтобы одна из его вершин имела координаты а длина ребра была равна Необходимо построить проекцию трехмерного объекта на плоскость. Если строится движущееся изображение, то может потребоваться много таких проекций. Если требуется построить штриховое изображение, то для его воспроизведения можно воспользоваться простой программой, аналогичной процедуре Для воспроизведения заполненного изображения необходимо прежде установить, какие три из шести граней куба являются видимыми. Если воспроизводится изображение более чем одного куба, то следует выяснить, не заслоняет ли один из них другой, и, следовательно, возникает даже более сложная задача разделения видимых и невидимых элементов объекта.

Приведенные примеры иллюстрируют некоторые основные задачи, которые необходимо решать при воспроизведении

изображения. Для поворота изображения и получения проекций необходимо осуществлять преобразование координат, что, в свою очередь, требует проверять, находятся ли объекты по-прежнему в поле зрения и не заслоняют ли они друг друга. В целом эти задачи можно определить как проблему видности (наблюдаемости) объектов на изображении. В этой и следующей главах главным образом будет обсуждаться воспроизведение изображений двухмерных объектов, трехмерная машинная графика является предметом рассмотрения в гл. 16 и 17. Преобразованию двухмерных координат посвящен разд. 14.2. В разд. 14.3 и 14.4 приведен ряд математических результатов, используемых при решении значительного числа задач машинной графики. Процесс установления пересечения прямой (или многоугольника) с другим многоугольником обычно называют отсечением (сечением) — он будет предметом нашего рассмотрения в гл. 15.

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

1
Оглавление
email@scask.ru